概述
在线程池的使用过程中,我们有时候会遇到下面的异常
那么什么时候会发生这个异常呢
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个任务,由于此时
提交的任务个数大于最大线程树和排队的个数总和,所以发生了异常