在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
0stop
1tidying
10terminated
11左移29位之後的二進位制狀態:
狀態二進位制
高三位running
11100000000000000000000000000000
(111)
shutdown
00000000000000000000000000000000
(000)
stop
00100000000000000000000000000000
(001)
tidying
01000000000000000000000000000000
(010)
terminated
01100000000000000000000000000000
(011)
五種執行緒池
1 newcachedthreadpool可快取執行緒池 作用 建立乙個可根據需要建立新執行緒的執行緒池,但是在以前構造的執行緒可用時將重用它們,並在需要時使用提供的 threadfactory 建立新執行緒。特徵 1 執行緒池中數量沒有固定,可達到最大值 interger.max value 2 ...
執行緒狀態 執行緒池
1.執行緒狀態變遷 2.為什麼notify notifyall wait要在同步方法或塊中執行 2.1在j a中,所有物件都能夠被作為 監視器monitor 指乙個擁有乙個獨佔鎖,乙個入口佇列和乙個等待佇列的實體entity。所有物件的非同步方法都能夠在任意時刻被任意執行緒呼叫,此時不需要考慮加鎖的...
執行緒池的狀態
running 這是最正常的狀態,接受新的任務,處理等待佇列中的任務。執行緒池的初始化狀態是running。執行緒池被一旦被建立,就處於running狀態,並且執行緒池中的任務數為0。shutdown 不接受新的任務提交,但是會繼續處理等待佇列中的任務。呼叫執行緒池的shutdown 方法時,執行緒...