|
|
|
@ -1,5 +1,5 @@ |
|
|
|
|
/* |
|
|
|
|
* Copyright 2002-2012 the original author or authors. |
|
|
|
|
* Copyright 2002-2013 the original author or authors. |
|
|
|
|
* |
|
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
|
|
|
* you may not use this file except in compliance with the License. |
|
|
|
@ -126,7 +126,7 @@ public class ThreadPoolExecutorFactoryBean extends ExecutorConfigurationSupport |
|
|
|
|
* <p>Default is "false", exposing the raw executor as bean reference. |
|
|
|
|
* Switch this flag to "true" to strictly prevent clients from |
|
|
|
|
* modifying the executor's configuration. |
|
|
|
|
* @see java.util.concurrent.Executors#unconfigurableScheduledExecutorService |
|
|
|
|
* @see java.util.concurrent.Executors#unconfigurableExecutorService |
|
|
|
|
*/ |
|
|
|
|
public void setExposeUnconfigurableExecutor(boolean exposeUnconfigurableExecutor) { |
|
|
|
|
this.exposeUnconfigurableExecutor = exposeUnconfigurableExecutor; |
|
|
|
@ -137,9 +137,8 @@ public class ThreadPoolExecutorFactoryBean extends ExecutorConfigurationSupport |
|
|
|
|
ThreadFactory threadFactory, RejectedExecutionHandler rejectedExecutionHandler) { |
|
|
|
|
|
|
|
|
|
BlockingQueue<Runnable> queue = createQueue(this.queueCapacity); |
|
|
|
|
ThreadPoolExecutor executor = new ThreadPoolExecutor( |
|
|
|
|
this.corePoolSize, this.maxPoolSize, this.keepAliveSeconds, TimeUnit.SECONDS, |
|
|
|
|
queue, threadFactory, rejectedExecutionHandler); |
|
|
|
|
ThreadPoolExecutor executor = createExecutor(this.corePoolSize, this.maxPoolSize, |
|
|
|
|
this.keepAliveSeconds, queue, threadFactory, rejectedExecutionHandler); |
|
|
|
|
if (this.allowCoreThreadTimeOut) { |
|
|
|
|
executor.allowCoreThreadTimeOut(true); |
|
|
|
|
} |
|
|
|
@ -151,6 +150,27 @@ public class ThreadPoolExecutorFactoryBean extends ExecutorConfigurationSupport |
|
|
|
|
return executor; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Create a new instance of {@link ThreadPoolExecutor} or a subclass thereof. |
|
|
|
|
* <p>The default implementation creates a standard {@link ThreadPoolExecutor}. |
|
|
|
|
* Can be overridden to provide custom {@link ThreadPoolExecutor} subclasses. |
|
|
|
|
* @param corePoolSize the specified core pool size |
|
|
|
|
* @param maxPoolSize the specified maximum pool size |
|
|
|
|
* @param keepAliveSeconds the specified keep-alive time in seconds |
|
|
|
|
* @param queue the BlockingQueue to use |
|
|
|
|
* @param threadFactory the ThreadFactory to use |
|
|
|
|
* @param rejectedExecutionHandler the RejectedExecutionHandler to use |
|
|
|
|
* @return a new ThreadPoolExecutor instance |
|
|
|
|
* @see #afterPropertiesSet() |
|
|
|
|
*/ |
|
|
|
|
protected ThreadPoolExecutor createExecutor( |
|
|
|
|
int corePoolSize, int maxPoolSize, int keepAliveSeconds, BlockingQueue<Runnable> queue, |
|
|
|
|
ThreadFactory threadFactory, RejectedExecutionHandler rejectedExecutionHandler) { |
|
|
|
|
|
|
|
|
|
return new ThreadPoolExecutor(corePoolSize, maxPoolSize, |
|
|
|
|
keepAliveSeconds, TimeUnit.SECONDS, queue, threadFactory, rejectedExecutionHandler); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Create the BlockingQueue to use for the ThreadPoolExecutor. |
|
|
|
|
* <p>A LinkedBlockingQueue instance will be created for a positive |
|
|
|
|