1.变量

ThreadPoolExecutor先定义了这几个常量,初看时一脸懵逼,其实它就是用int的二进制高三位来表示线程池的状态,

先回顾一下位运算:

  1. <<’左移:右边空出的位置补0,其值相当于乘以2。
  2. ‘>>’右移:左边空出的位,如果是正数则补0,若为负数则补0或1,取决于所用的计算机系统OS X中补1。其值相当于除以2。
  3. 负数二进制由它的绝对值取反后加1
    private final AtomicInteger ctl = new AtomicInteger(ctlOf(RUNNING, 0));
private static final int COUNT_BITS = Integer.SIZE - 3;// 29
private static final int CAPACITY = (1 << COUNT_BITS) - 1; // 1<<29=00100000 00000000 00000000 00000000 再减1=00011111 11111111 11111111 11111111
   // 1的二进制是001,取反是110,再加1是111,111就是-1的二进制,再左移29,
private static final int RUNNING = -1 << COUNT_BITS;// 00000 00000000 00000000 00000000
private static final int SHUTDOWN = 0 << COUNT_BITS;// 00000 00000000 00000000 00000000
private static final int STOP = 1 << COUNT_BITS;// 00000 00000000 00000000 00000000
private static final int TIDYING = 2 << COUNT_BITS;// 00000 00000000 00000000 00000000
private static final int TERMINATED = 3 << COUNT_BITS;// 00000 00000000 00000000 00000000

  

最新文章

  1. iOS 与 惯性滚动
  2. 服务端JavaScript之Rhino
  3. 关于EEG参考电极
  4. Play on Words 欧拉通路(回路)判断
  5. CSS 之 margin知识点
  6. iframe自适应高度的问题
  7. Unicode字符列表
  8. js 加载初始化日期
  9. 201521123027 《JAVA程序设计》第3周学习总结
  10. 两天快速开发一个自己的微信小程序
  11. diff和patch命令(1)
  12. Tutorial 02_熟悉常用的HDFS操作
  13. CentOS 7的安装详解
  14. VS2015+Opencv3.2配置(一次配好)
  15. Java中sleep方法和wait的详细区别
  16. 汽车车牌JS正则表达式验证(含新能源车牌)
  17. JavaScript调试小技巧
  18. Nested Prefab Mode 嵌套预制体 保存问题 Dirty
  19. Harbor配置https,并安装内容信任插件(notary)
  20. docker——镜像(image)

热门文章

  1. ssh_exchange_identification: read: Connection reset by peer解决办法
  2. spark复习笔记(4):RDD变换
  3. mongoDB关系型数据库的对比
  4. 表格类型数据,Excel csv导入,导出操作
  5. 微信支付签名算法JavaScript版,参数名ASCII码从小到大排序;0,A,B,a,b;
  6. Jupyter Notebook 安装与使用
  7. 解决Debug JDK source 无法查看局部变量的问题方案
  8. NODE升级到V12.X.X
  9. TextView控件常用属性
  10. centos 配置vlan