ThreadPoolExecutorFactoryBean exposes "createExecutor" method for custom ThreadPoolExecutor subclasses
Issue: SPR-9435
This commit is contained in:
parent
4dde7c4c16
commit
a425d717b7
|
|
@ -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");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with 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.
|
* <p>Default is "false", exposing the raw executor as bean reference.
|
||||||
* Switch this flag to "true" to strictly prevent clients from
|
* Switch this flag to "true" to strictly prevent clients from
|
||||||
* modifying the executor's configuration.
|
* modifying the executor's configuration.
|
||||||
* @see java.util.concurrent.Executors#unconfigurableScheduledExecutorService
|
* @see java.util.concurrent.Executors#unconfigurableExecutorService
|
||||||
*/
|
*/
|
||||||
public void setExposeUnconfigurableExecutor(boolean exposeUnconfigurableExecutor) {
|
public void setExposeUnconfigurableExecutor(boolean exposeUnconfigurableExecutor) {
|
||||||
this.exposeUnconfigurableExecutor = exposeUnconfigurableExecutor;
|
this.exposeUnconfigurableExecutor = exposeUnconfigurableExecutor;
|
||||||
|
|
@ -137,9 +137,8 @@ public class ThreadPoolExecutorFactoryBean extends ExecutorConfigurationSupport
|
||||||
ThreadFactory threadFactory, RejectedExecutionHandler rejectedExecutionHandler) {
|
ThreadFactory threadFactory, RejectedExecutionHandler rejectedExecutionHandler) {
|
||||||
|
|
||||||
BlockingQueue<Runnable> queue = createQueue(this.queueCapacity);
|
BlockingQueue<Runnable> queue = createQueue(this.queueCapacity);
|
||||||
ThreadPoolExecutor executor = new ThreadPoolExecutor(
|
ThreadPoolExecutor executor = createExecutor(this.corePoolSize, this.maxPoolSize,
|
||||||
this.corePoolSize, this.maxPoolSize, this.keepAliveSeconds, TimeUnit.SECONDS,
|
this.keepAliveSeconds, queue, threadFactory, rejectedExecutionHandler);
|
||||||
queue, threadFactory, rejectedExecutionHandler);
|
|
||||||
if (this.allowCoreThreadTimeOut) {
|
if (this.allowCoreThreadTimeOut) {
|
||||||
executor.allowCoreThreadTimeOut(true);
|
executor.allowCoreThreadTimeOut(true);
|
||||||
}
|
}
|
||||||
|
|
@ -151,6 +150,27 @@ public class ThreadPoolExecutorFactoryBean extends ExecutorConfigurationSupport
|
||||||
return executor;
|
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.
|
* Create the BlockingQueue to use for the ThreadPoolExecutor.
|
||||||
* <p>A LinkedBlockingQueue instance will be created for a positive
|
* <p>A LinkedBlockingQueue instance will be created for a positive
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue