Java多執行緒

2021-09-02 18:20:42 字數 1448 閱讀 4299

執行緒狀態圖

新建狀態(new)

執行緒物件被建立後,就進入了新建狀態。例如,

thread thread = new thread()。

就緒狀態(runnable)

也被稱為

「可執行狀態

」。執行緒物件被建立後,其它執行緒呼叫了該物件的

start()

方法,從而來啟動該執行緒。例如,

thread.start()

。執行中的執行緒呼叫

yield()

之後也會進入就緒狀態。處於就緒狀態的執行緒,隨時可能被

cpu

排程執行。

執行狀態(running)

執行緒獲取

cpu許可權進行執行。需要注意的是,執行緒只能從就緒狀態進入到執行狀態。

阻塞狀態(blocked)

阻塞狀態是執行緒因為某種原因放棄

cpu

使用權,暫時停止執行。直到執行緒進入就緒狀態,才有機會轉到執行狀態。阻塞的情況分三種:

a)

等待阻塞

– 通過呼叫執行緒的

wait()

方法,讓執行緒等待某工作的完成。

b)

同步阻塞

執行緒在獲取

synchronized

同步鎖失敗

(因為鎖被其它執行緒所占用

),它會進入同步阻塞狀態。

b)

其他阻塞

– 通過呼叫執行緒的

sleep()

或join()

或發出了

i/o

請求時,執行緒會進入到阻塞狀態。當

sleep()

狀態超時、

join()

等待執行緒終止或者超時、或者

i/o

處理完畢時,執行緒重新轉入就緒狀態。

死亡狀態(dead)執行緒執行完了或者因異常退出了

run()

方法,該執行緒結束生命週期。

java多執行緒

在網上看到很有意思的問題,摘下來好好看下 在面試的時候被問了乙個多執行緒的問題 回來仔細思考了一下,多執行緒是否真的能提高了效率?我對多執行緒的理解就是 比如挖乙個隧道,有2種開工方法 1 只在山的一頭挖,直至挖到山的另一頭,從而打通隧道,這可以看成是單執行緒 2 在山的兩頭挖,同時開工,最後在山的...

Java 多執行緒

1。thread類和runnable介面 2。主線程 用thread的static thread currentthread 方法獲得 3。通過實現runnable介面建立執行緒 實現runnable介面的run方法。新執行緒在run 方法返回時結束。注意用這種方法建立程序時,在實現runnable...

JAVA 多執行緒

為hashmap的不正確使用所導致。hashmap在多執行緒環境下使用不安全。使用靜態hashmap作為聯絡人資料快取,key為手機號碼.private static maplxrdata new hashmap 多執行緒環境下不同步hashmap可能導致如下問題 1 多執行緒put操作後可能導致g...