執行緒池 關於執行緒池的五種狀態

2021-08-31 00:24:32 字數 982 閱讀 6766

在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 方法時,執行緒...