Update of /var/cvs/src/org/mmbase/util
In directory james.mmbase.org:/tmp/cvs-serv479

Modified Files:
      Tag: MMBase-1_8
        ThreadPools.java 
Log Message:
ported the 'scheduler' from HEAD


See also: http://cvs.mmbase.org/viewcvs/src/org/mmbase/util


Index: ThreadPools.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/util/ThreadPools.java,v
retrieving revision 1.5.2.1
retrieving revision 1.5.2.2
diff -u -b -r1.5.2.1 -r1.5.2.2
--- ThreadPools.java    28 Mar 2007 12:20:43 -0000      1.5.2.1
+++ ThreadPools.java    12 Aug 2008 13:05:18 -0000      1.5.2.2
@@ -15,24 +15,14 @@
  *
  * @since MMBase 1.8
  * @author Michiel Meewissen
- * @version $Id: ThreadPools.java,v 1.5.2.1 2007/03/28 12:20:43 michiel Exp $
+ * @version $Id: ThreadPools.java,v 1.5.2.2 2008/08/12 13:05:18 michiel Exp $
  */
 public abstract class ThreadPools {
     private static final Logger log = 
Logging.getLoggerInstance(ThreadPools.class);
 
-    /**
-     * Generic Thread Pools which can be used by 'filters'.
-     */
-    public static final Executor filterExecutor = 
Executors.newCachedThreadPool();
-
 
-    /**
-     * For jobs there are 'scheduled', and typically happen on larger 
time-scales.
-     */
-    public static final Executor jobsExecutor = new ThreadPoolExecutor(2, 10, 
5, TimeUnit.MINUTES, new  LinkedBlockingQueue(), new ThreadFactory() {
-
-            public Thread newThread(Runnable r) {
-                Thread t = new Thread(r, "JOBTHREAD") {
+    private static Thread newThread(Runnable r, String id) {
+        Thread t = new 
Thread(org.mmbase.module.core.MMBaseContext.getThreadGroup(), r, id) {
                         /**
                          * Overrides run of Thread to catch and log all 
exceptions. Otherwise they go through to app-server.
                          */
@@ -47,6 +37,27 @@
                 t.setDaemon(true);
                 return t;
             }
+
+    /**
+     * Generic Thread Pools which can be used by 'filters'.
+     */
+    public static final Executor filterExecutor = 
Executors.newCachedThreadPool();
+
+
+    /**
+     * For jobs there are 'scheduled', and typically happen on larger 
time-scales.
+     */
+    public static final Executor jobsExecutor = new ThreadPoolExecutor(2, 10, 
5, TimeUnit.MINUTES, new  LinkedBlockingQueue(), new ThreadFactory() {
+
+            public Thread newThread(Runnable r) {
+                return ThreadPools.newThread(r, "JOBTHREAD");
+            }
+        });
+
+    public static final ScheduledExecutorService scheduler = new 
ScheduledThreadPoolExecutor(2, new ThreadFactory() {
+            public Thread newThread(Runnable r) {
+                return ThreadPools.newThread(r, "SCHEDULERTHREAD");
+            }
         });
 
 
@@ -56,6 +67,7 @@
     public static final void shutdown() {
         ((ExecutorService) filterExecutor).shutdown();
         ((ExecutorService) jobsExecutor).shutdown();
+        ((ExecutorService) scheduler).shutdown();
     }
 
 }
_______________________________________________
Cvs mailing list
Cvs@lists.mmbase.org
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to