【发布时间】:2016-07-07 01:15:51
【问题描述】:
我使用ThreadPoolExecutor如下:
ThreadPoolExecutor pool = new ThreadPoolExecutor(cores, 50, 30L,
TimeUnit.SECONDS, new ArrayBlockingQueue<>(10));
和:
pool.execute(()->{
//code goes here
if(some condition){
return;
}
//code goes here
})
当启用这个带有返回语句的块时,所有这些任务都会卡在 TPE 中。 TPE 说它已经满载并且总是抛出RejectedExecutionExceptionexception
我不明白为什么会这样。例如,如果您有一个大小为 10 的池,并且您有 100 个任务,其中 10 个将匹配如果部分,您将不接受第 101 个任务,所有下一个任务将被拒绝。为什么?
【问题讨论】:
-
这个描述很难判断出了什么问题……提交的任务有没有被执行?也许您的任务代码中存在某种错误,它们很容易停止......
-
实际上你不会接受第 11 个任务,因为队列大小为 10
标签: java multithreading java-8 threadpoolexecutor