ThreadPool 源码分析

一  ThreadPool源码分析 

         ThreadPool源码 主要是ThreadPoolExecutor ,这个类里面执行的,在去阅读源码之前,需要去了解下线程池的执行过程,以及线程池的参数,可以参考文章

ThreadPool_不想做咸鱼程序猿的博客-CSDN博客icon-default.png?t=M85Bhttps://blog.csdn.net/weixin_49366997/article/details/120289633?spm=1001.2014.3001.5501


二   ThreadPoolExecutor源码分析 

        闲话不多说我们直接看下源码分析。我们这里的源码分析主要是分析一下ThreadPoolExecutor 的 execute 方法,在看这个方法的源码之前,先来了解下这个类的核心属性,代码及相关的注释如下所示:

    //记录线程信息的标志,由于是integer的类型,所以这个属性的值一共有32位,
	//是一个线程安全的整形。初始状态位Running,表示线程池的状态
	//32位的数据一共分为两部分,1到29位来统计线程的个数,30到32位来表示线程的状态
    private final AtomicInteger ctl = new AtomicInteger(ctlOf(RUNNING, 0));
    //设置统计线程的个数的位数
    private static final int COUNT_BITS = Integer.SIZE - 3;
    //设置线程池中线程的最大容量2的29次方减一个
    private static final int CAPACITY   = (1 << COUNT_BITS) - 1;

    // runState is stored in the high-order bits
    //线程池的状态 RUNNING, SHUTDOWN, STOP, TIDYING, TERMINATED
    //线程池的状态有-1,0,1,2,3这五种状态,由于线程池的状态是在30到32位之间的二进制表示,
    //所以线程池的状态值要左移29位,防止与线程数量统计的值冲突,于是
    //RUNNING 的线程值位 -1左移29位,即为-536870912
    private static final int RUNNING    = -1 << COUNT_BITS;
    //SHUTDOWN 的线程值位 0左移29位,即为0
    private static final int SHUTDOWN   =  0 << COUNT_BITS;
    //STOP 的线程值位 1左移29位,即为536870912 
    private static
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值