2017-06-19 58 views

回答

1

环顾此代码in the source有点:

private static final int COUNT_BITS = Integer.SIZE - 3; 
private static final int CAPACITY = (1 << COUNT_BITS) - 1; 

// runState is stored in the high-order bits 
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; 

// Packing and unpacking ctl 
private static int runStateOf(int c)  { return c & ~CAPACITY; } 
private static int workerCountOf(int c) { return c & CAPACITY; } 
private static int ctlOf(int rs, int wc) { return rs | wc; } 

运行状态被存储在高位比特;工人计数存储在低位中。将两个打包成一个int只是节省了一点内存。

相关问题