概述
在线程池的使用过程中,我们有时候会遇到下面的异常
那么什么时候会发生这个异常呢
1.线程池关闭以后,再次提交任务
2.提交线程的数量大于最大线程数+任务队列中排队的个数
接下来我们模拟一下
情况一
ExecutorService service = Executors.newCachedThreadPool();
//执行下面的会发生RejectedExecutionException
service.shutdown();
service.submit(new Task());情况二
ThreadPoolExecutor executor = new ThreadPoolExecutor(2,3,30,
TimeUnit.SECONDS,new LinkedBlockingQueue<Runnable>(1));
for (int i = 0; i < 5; i++) {
executor.execute(new Task());
}这里我们创建了一个线程池,最大线程数是3,任务队列中允许排队的线程个数是1,然后我omen提交了5个任务,由于此时
提交的任务个数大于最大线程树和排队的个数总和,所以发生了异常
本文详细解析了在线程池使用过程中出现RejectedExecutionException的原因及场景,包括线程池关闭后再次提交任务和提交任务数量超过最大线程数与任务队列容量之和的情况。
2万+

被折叠的 条评论
为什么被折叠?



