[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