java.util.concurrent.RejectedExecutionException异常发生的时机
Posted lxn_李小牛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java.util.concurrent.RejectedExecutionException异常发生的时机相关的知识,希望对你有一定的参考价值。
概述
在线程池的使用过程中,我们有时候会遇到下面的异常
那么什么时候会发生这个异常呢
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个任务,由于此时
提交的任务个数大于最大线程树和排队的个数总和,所以发生了异常
以上是关于java.util.concurrent.RejectedExecutionException异常发生的时机的主要内容,如果未能解决你的问题,请参考以下文章