博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
线程池之ThreadPoolExecutor源码解析
阅读量:5232 次
发布时间:2019-06-14

本文共 1060 字,大约阅读时间需要 3 分钟。

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;// 11100000 00000000 00000000 00000000    private static final int SHUTDOWN   =  0 << COUNT_BITS;// 00000000 00000000 00000000 00000000    private static final int STOP       =  1 << COUNT_BITS;// 00100000 00000000 00000000 00000000    private static final int TIDYING    =  2 << COUNT_BITS;// 01000000 00000000 00000000 00000000    private static final int TERMINATED =  3 << COUNT_BITS;// 01100000 00000000 00000000 00000000

  

转载于:https://www.cnblogs.com/akaneblog/p/11462549.html

你可能感兴趣的文章
【hdu 1429】胜利大逃亡(续)
查看>>
SQL字符型转日期型
查看>>
Java程序设计教程(第2版)阅读总结
查看>>
图论-次短路求法
查看>>
What's New for Visual C# 6.0
查看>>
ExtJs学习笔记之ComboBox组件
查看>>
关于收费软件
查看>>
getopt_long
查看>>
TensorFlow MNIST CNN 代码
查看>>
javascript之Style物
查看>>
JSON跨域解决方案收集
查看>>
SSH框架整合总结
查看>>
图的深度优先遍历
查看>>
C# 之 提高WebService性能大数据量网络传输处理
查看>>
md5sum命令详解
查看>>
[bzoj1004] [HNOI2008] Cards
查看>>
Merge into的使用具体解释-你Merge了没有
查看>>
Linux安装程序Anaconda分析
查看>>
如何在chrome上打开SSL3.0
查看>>
应该是实例化对象的没有对属性赋值时,自动赋值为null,但不是空指针对象引用...
查看>>