[exo-jcr-commits] exo-jcr SVN: r3344 - in jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl: proccess and 1 other directory.

do-not-reply at jboss.org do-not-reply at jboss.org
Mon Oct 25 10:13:33 EDT 2010


Author: sergiykarpenko
Date: 2010-10-25 10:13:33 -0400 (Mon, 25 Oct 2010)
New Revision: 3344

Modified:
   jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/LockRemover.java
   jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/LockRemoverHolder.java
   jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/proccess/WorkerService.java
Log:
EXOJCR-999: WorkerThreadFactory updated

Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/LockRemover.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/LockRemover.java	2010-10-25 12:35:03 UTC (rev 3343)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/LockRemover.java	2010-10-25 14:13:33 UTC (rev 3344)
@@ -38,7 +38,7 @@
 
    private final long timeout;
 
-   private ScheduledFuture lockRemoverTask = null;
+   private ScheduledFuture<?> lockRemoverTask = null;
 
    class LockRemoverTask implements Runnable
    {
@@ -69,11 +69,10 @@
 
    public void start()
    {
-      if (lockRemoverTask != null)
+      if (lockRemoverTask == null)
       {
-         stop();
+         lockRemoverTask = workerService.executePeriodically(new LockRemoverTask(lockManager), timeout);
       }
-      lockRemoverTask = workerService.executePeriodically(new LockRemoverTask(lockManager), timeout);
    }
 
    public void stop()
@@ -81,5 +80,4 @@
       lockRemoverTask.cancel(false);
       lockRemoverTask = null;
    }
-
 }

Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/LockRemoverHolder.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/LockRemoverHolder.java	2010-10-25 12:35:03 UTC (rev 3343)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/LockRemoverHolder.java	2010-10-25 14:13:33 UTC (rev 3344)
@@ -36,7 +36,7 @@
             threadCount = entry.getLockRemoverThreadsCount();
          }
       }
-      workerService = new WorkerService(threadCount, "lock-remover");
+      workerService = new WorkerService(threadCount, "lock-remover-" + entry.getName());
    }
 
    /**

Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/proccess/WorkerService.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/proccess/WorkerService.java	2010-10-25 12:35:03 UTC (rev 3343)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/proccess/WorkerService.java	2010-10-25 14:13:33 UTC (rev 3344)
@@ -13,9 +13,9 @@
     */
    private final ScheduledThreadPoolExecutor executor;
 
-   class WorkerThreadFactory implements ThreadFactory
+   static class WorkerThreadFactory implements ThreadFactory
    {
-      final AtomicInteger poolNumber = new AtomicInteger(1);
+      static final AtomicInteger poolNumber = new AtomicInteger(1);
 
       final ThreadGroup group;
 
@@ -23,18 +23,25 @@
 
       final String namePrefix;
 
+      final boolean isDaemon;
+
       WorkerThreadFactory(String namePrefix)
       {
+         this(namePrefix, false);
+      }
+
+      WorkerThreadFactory(String namePrefix, boolean isDaemon)
+      {
+         this.isDaemon = isDaemon;
          SecurityManager s = System.getSecurityManager();
          group = (s != null) ? s.getThreadGroup() : Thread.currentThread().getThreadGroup();
-         this.namePrefix = namePrefix + poolNumber.getAndIncrement() + "-thread-";
+         this.namePrefix = namePrefix + "-" + poolNumber.getAndIncrement() + "-thread-";
       }
 
       public Thread newThread(Runnable r)
       {
          Thread t = new Thread(group, r, namePrefix + threadNumber.getAndIncrement(), 0);
-         if (t.isDaemon())
-            t.setDaemon(false);
+         t.setDaemon(isDaemon);
          if (t.getPriority() != Thread.NORM_PRIORITY)
             t.setPriority(Thread.NORM_PRIORITY);
          return t;
@@ -63,13 +70,26 @@
    }
 
    /**
+    * Constructor.
+    * 
+    * @param threadCount - max thread count that executor may use
+    * @param threadNamePrefix - thread name prefix
+    * @param makeThreadsDaemon - does thread created by Service must be daemon
+    */
+   public WorkerService(int threadCount, String threadNamePrefix, boolean makeThreadsDaemon)
+   {
+      executor =
+         new ScheduledThreadPoolExecutor(threadCount, new WorkerThreadFactory(threadNamePrefix, makeThreadsDaemon));
+   }
+
+   /**
     * Execute specified <code>command</code> periodically with <code>delay</code>.
     * 
     * @param command - command that must be executed
     * @param delay - delay between each command execution 
     * @return
     */
-   public ScheduledFuture executePeriodically(Runnable command, long delay)
+   public ScheduledFuture<?> executePeriodically(Runnable command, long delay)
    {
       return executor.scheduleWithFixedDelay(command, 0, delay, TimeUnit.MILLISECONDS);
    }



More information about the exo-jcr-commits mailing list