柔弱电脑

文章
4
资源
0
加入时间
2年10月18天

通过自定义阻塞队列触发ThreadPoolExecutor创建非核心线程执行任务无界队列导致maximumPoolSize无效自定义阻塞队列重写LinkedBlockingDeque的方法触发创建非核心线程测试代码

Java项目常使用ThreadPoolExecutor创建线程池,核心参数包含corePoolSize,maximumPoolSize,workQueue。我们希望构建的线程池能满足如下条件:线程数量可控。需要设置一个最大线程数量maximumPoolSize,防止线程无限制创建,耗尽系统资源。放到线程池中的任务不会被拒绝丢弃(任务被丢弃,将导致严重的业务BUG)。所以一般定义一个无界阻塞队列(不指定大小,容量最大值是Integer.MAX_VALUE),用于缓存待执行的任务。无界队列导致max