我正在寻找一种ExecutorService
按需创建线程达到预定义限制并在保持活动时间后销毁空闲线程的方法。
以下构造函数创建一个ThreadPoolExecutor
具有固定线程数的:
// taken from Executors.newFixedThreadPool()
new ThreadPoolExecutor(nThreads, nThreads,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>());
所以我试图创建一个ExecutorService
这样的:
// taken from Executors.newCachedThreadPool()
new ThreadPoolExecutor(0, nThreads,
CACHED_POOL_SHUTDOWN_DELAY, TimeUnit.SECONDS,
new SynchronousQueue<Runnable>());
但它没有按预期工作,nThreads
在使用时,Executor
不会将新任务排入队列,而是抛出一个RejectedExecutionException
. 我知道我可以为此实现一个处理程序,但这对我没有帮助。
如何创建Executor
前面描述的内容?