java多线程:阿里巴巴java开发手册为什么要禁用 Executors 创建线程池

背景

在上篇文章中java多线程:线程池的深度理解中,我们利用继承ThreadPoolExecutor类完成了线程池的创建。在JDK1.5以后增加了Executors类,该类提供了几种创建线程池的静态方法,比如:
在这里插入图片描述
但我们翻阅阿里java开发手册:文中醒目的用红字标明禁示用Executors创建以下四种类型的线程池。本文将通过对这些类型的线程池进行源码跟踪,逐个解析。
在这里插入图片描述

FixedThreadPool

FixedThreadPool创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待,适用于为了满足资源管理的需求,而需要限制当前线程数量的应用场景,它适用于负载比较重的服务器。
跟踪下源码:

  1. 在静态方法newFixedThreadPool中new 了一个LinkedBlockingQueue对象,
  2. 而这个LinkedBlockingQueue类的构造函中通过Integer.MAX_VALUE对队列的容量做了无界值的设置
/**
*Executors.java
*/
 public static ExecutorService newFixedThreadPool(int nThreads) {
   
        return new ThreadPoolExecutor(nThreads, nThreads,
                                      0L, TimeUnit.MILLISECONDS,
                                      new LinkedBlockingQueue<Runnable>());
    }
...
/**
*LinkedBlockingQueue.java
*/
	/**
     * Creates a {@code LinkedBlockingQueue} with a capacity of
     * {@link Integer#MAX_VALUE}.
     */
    public LinkedBlockingQueue(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智慧zhuhuix

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值