From 945655d159773e1c49f96cc360e102f4924ee00b Mon Sep 17 00:00:00 2001 From: Bruce Mitchener Date: Tue, 15 Nov 2011 22:22:30 +0700 Subject: [PATCH] Add a shutdown method to Metrics to make it easier to shut everything down. --- .../main/java/com/yammer/metrics/Metrics.java | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/metrics-core/src/main/java/com/yammer/metrics/Metrics.java b/metrics-core/src/main/java/com/yammer/metrics/Metrics.java index ce130db3b7..12e6e3890e 100644 --- a/metrics-core/src/main/java/com/yammer/metrics/Metrics.java +++ b/metrics-core/src/main/java/com/yammer/metrics/Metrics.java @@ -3,6 +3,7 @@ import com.yammer.metrics.core.*; import com.yammer.metrics.reporting.ConsoleReporter; import com.yammer.metrics.reporting.JmxReporter; +import com.yammer.metrics.util.Utils; import javax.management.MalformedObjectNameException; import java.util.Map; @@ -13,15 +14,16 @@ */ public class Metrics { private static final MetricsRegistry DEFAULT_REGISTRY = new MetricsRegistry(); + private static final Thread SHUTDOWN_HOOK = new Thread() { + public void run() { + JmxReporter.shutdownDefault(); + } + }; static {{ JmxReporter.startDefault(DEFAULT_REGISTRY); // make sure we initialize this so it can monitor GC etc VirtualMachineMetrics.daemonThreadCount(); - Runtime.getRuntime().addShutdownHook(new Thread() { - public void run() { - JmxReporter.shutdownDefault(); - } - }); + Runtime.getRuntime().addShutdownHook(SHUTDOWN_HOOK); }} private Metrics() { /* unused */ } @@ -441,4 +443,11 @@ public static Map allMetrics() { public static MetricsRegistry defaultRegistry() { return DEFAULT_REGISTRY; } + + public static void shutdown() { + Utils.shutdownThreadPools(); + DEFAULT_REGISTRY.threadPools().shutdownThreadPools(); + JmxReporter.shutdownDefault(); + Runtime.getRuntime().removeShutdownHook(SHUTDOWN_HOOK); + } }