You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by li...@apache.org on 2009/09/03 19:20:38 UTC
svn commit: r811044 -
/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/DefaultGuiceModule.java
Author: lindner
Date: Thu Sep 3 17:20:38 2009
New Revision: 811044
URL: http://svn.apache.org/viewvc?rev=811044&view=rev
Log:
SHINDIG-1164 | Use daemon thread pools to avoid problems stopping shindig
Modified:
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/DefaultGuiceModule.java
Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/DefaultGuiceModule.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/DefaultGuiceModule.java?rev=811044&r1=811043&r2=811044&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/DefaultGuiceModule.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/DefaultGuiceModule.java Thu Sep 3 17:20:38 2009
@@ -36,6 +36,7 @@
import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
+import java.util.concurrent.ThreadFactory;
/**
* Creates a module to supply all of the core gadget classes.
@@ -46,9 +47,14 @@
@Override
protected void configure() {
- ExecutorService service = Executors.newCachedThreadPool();
+ final ExecutorService service = Executors.newCachedThreadPool(DAEMON_THREAD_FACTORY);
bind(Executor.class).toInstance(service);
bind(ExecutorService.class).toInstance(service);
+ Runtime.getRuntime().addShutdownHook(new Thread() {
+ public void run() {
+ service.shutdownNow();
+ }
+ });
install(new ParseModule());
install(new PreloadModule());
@@ -66,4 +72,15 @@
// We perform static injection on HttpResponse for cache TTLs.
requestStaticInjection(HttpResponse.class);
}
+
+
+ public static ThreadFactory DAEMON_THREAD_FACTORY =
+ new ThreadFactory() {
+ public Thread newThread(Runnable r) {
+ Thread t = Executors.defaultThreadFactory().newThread(r);
+ t.setDaemon(true);
+ return t;
+ }
+ };
+
}