Search in sources :

Example 1 with ParallelExecutorImpl

use of org.apache.tapestry5.ioc.internal.services.ParallelExecutorImpl in project tapestry-5 by apache.

the class TapestryIOCModule method buildDeferredExecution.

public static ParallelExecutor buildDeferredExecution(@Symbol(IOCSymbols.THREAD_POOL_CORE_SIZE) int coreSize, @Symbol(IOCSymbols.THREAD_POOL_MAX_SIZE) int maxSize, @Symbol(IOCSymbols.THREAD_POOL_KEEP_ALIVE) @IntermediateType(TimeInterval.class) int keepAliveMillis, @Symbol(IOCSymbols.THREAD_POOL_ENABLED) boolean threadPoolEnabled, @Symbol(IOCSymbols.THREAD_POOL_QUEUE_SIZE) int queueSize, PerthreadManager perthreadManager, RegistryShutdownHub shutdownHub, ThunkCreator thunkCreator) {
    if (!threadPoolEnabled)
        return new NonParallelExecutor();
    LinkedBlockingQueue<Runnable> workQueue = new LinkedBlockingQueue<Runnable>(queueSize);
    final ThreadPoolExecutor executorService = new ThreadPoolExecutor(coreSize, maxSize, keepAliveMillis, TimeUnit.MILLISECONDS, workQueue);
    shutdownHub.addRegistryShutdownListener(new Runnable() {

        @Override
        public void run() {
            executorService.shutdown();
        }
    });
    return new ParallelExecutorImpl(executorService, thunkCreator, perthreadManager);
}
Also used : NonParallelExecutor(org.apache.tapestry5.ioc.internal.services.NonParallelExecutor) ParallelExecutorImpl(org.apache.tapestry5.ioc.internal.services.ParallelExecutorImpl) ThreadPoolExecutor(java.util.concurrent.ThreadPoolExecutor) LinkedBlockingQueue(java.util.concurrent.LinkedBlockingQueue) ServiceOverride(org.apache.tapestry5.ioc.services.ServiceOverride)

Aggregations

LinkedBlockingQueue (java.util.concurrent.LinkedBlockingQueue)1 ThreadPoolExecutor (java.util.concurrent.ThreadPoolExecutor)1 NonParallelExecutor (org.apache.tapestry5.ioc.internal.services.NonParallelExecutor)1 ParallelExecutorImpl (org.apache.tapestry5.ioc.internal.services.ParallelExecutorImpl)1 ServiceOverride (org.apache.tapestry5.ioc.services.ServiceOverride)1