[线程池] 关于线程池的五种状态

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/my_momo_csdn/article/details/83748634

线程状态

在ThreadPoolExecutor类中定义了线程的五种状态表示,通过AtomicInteger 的高三位来表示线程的状态:


    private static final int COUNT_BITS = Integer.SIZE - 3;
    private static final int RUNNING    = -1 << COUNT_BITS;
    private static final int SHUTDOWN   =  0 << COUNT_BITS;
    private static final int STOP       =  1 << COUNT_BITS;
    private static final int TIDYING    =  2 << COUNT_BITS;
    private static final int TERMINATED =  3 << COUNT_BITS;
    
左移29位之前的二进制状态:
状态
RUNNING 11111111111111111111111111111111
SHUTDOWN 0
STOP 1
TIDYING 10
TERMINATED 11
左移29位之后的二进制状态:
状态 二进制 高三位
RUNNING 11100000000000000000000000000000 (111)
SHUTDOWN 00000000000000000000000000000000 (000)
STOP 00100000000000000000000000000000 (001)
TIDYING 01000000000000000000000000000000 (010)
TERMINATED 01100000000000000000000000000000 (011)

线程状态变化

猜你喜欢

转载自blog.csdn.net/my_momo_csdn/article/details/83748634