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;
+        }
+    };
+
 }