生产环境线程池使用ArrayBlockingQueue跑任务报错:java.util.concurrent.RejectedExecutionException

提问者:帅平 问题分类:面试刷题
生产环境线程池使用ArrayBlockingQueue跑任务报错:java.util.concurrent.RejectedExecutionException 怎么办? 代码示例图如下:
生产环境线程池使用ArrayBlockingQueue跑任务报错:java.util.concurrent.RejectedExecutionException
1 个回答
你深入我心
你深入我心
在java队列里面,向线程池放任务的时候使用的顺序如下:
1、首先使用核心线程数
2、接着使用消息队列数
3、接着使用最大线程数

从上诉的代码可以看出,每次for循环向消息队列放入的job数大于队列数,接着就要使用最大线程数,此时最大线程数和核心线程数是一致的,所以就会出现RejectedExecutionException。这里我们可以把arrayBlockingQueue修改为无界的LinkedBlockingQueue
发布于:8个月前 (04-01) IP属地:四川省
我来回答