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");
|
||||
* 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
|
||||
|
|
|
|||
Loading…
Reference in New Issue