java多執行緒學習筆記(二)

2021-08-07 23:11:14 字數 861 閱讀 1832

8、  執行緒的狀態

ø  初始狀態

使用new關鍵字建立乙個執行緒,則執行緒就處理初始狀態。

ø  就緒狀態

建立執行緒後,需要我們手動呼叫start方法,來開啟執行緒,start方法會新建乙個執行緒並讓這個執行緒執行run方法。有的同學可能不理解,為什麼不直接呼叫run方法,請記住呼叫run來開啟新執行緒,它只會在當前的執行緒中,序列的執行run的方法。

ø  執行狀態

呼叫start方法後,其實不會立刻的執行執行緒,必須排隊,等待cpu來執行。當cpu真的處理當前的執行緒了,執行緒才處於執行狀態

ø  阻塞狀態

阻塞狀態就是執行緒被中斷了,但是沒有終止,可以在某些條件下繼續執行。比如:

呼叫thread.interrupt()方法,他會通知執行緒中斷,但是執行緒不一定會中斷,需要我們自己處理中斷的邏輯。

呼叫thread.sleep()方法,執行緒會處於睡眠狀態,一般會設定睡眠時間,到時間後,會自動重新執行。

呼叫thread.wait()方法,執行緒會處於等待狀態,知道其他執行緒呼叫notity()方法,才可以繼續執行。

呼叫thread.join()方法,執行緒會一直阻塞,直到目標執行緒執行完成。(join的本質是讓呼叫執行緒wait方法在當前執行緒物件例項上)。

呼叫thread.yeild()方法,執行緒會讓出cpu,但是還是會競爭cpu,只是一種謙讓。可以用在重要工作完成後,對cpu資源的一種謙讓。

ø  死亡狀態

run方法執行完成或出現異常情況,執行緒便結束了,也就進入了死亡狀態。還有一種方式可以讓執行緒處於死亡狀態,那就是呼叫thread.stop()方法。

筆者提醒,最好不要使用stop方法來停止執行緒,會引起一些意想不到的事情。如果需要停止乙個執行緒,可以使用乙個變數作為開關來停止執行緒。

Java多執行緒學習筆記

程序與執行緒 1.程序 執行中的程式 乙個程序至少包含乙個執行緒 2.執行緒 程序中負責程式執行的執行單元 執行緒本身依靠程式進行執行 執行緒是程式中的順序控制流,只能使用分配給程式的資源和環境 3.單執行緒 程式中只存在乙個執行緒,實際上主方法就是乙個主線程 4.多執行緒 在乙個程式中執行多個任務...

java多執行緒學習筆記

1 執行緒是乙個程式內部不同的執行路徑 2 生成執行緒只要能使用介面就不要繼承,繼承後就不能繼承其他的類,比較死。而且繼承的run方法不能丟擲與父類不同的異常。比如sleep的intterruptedexception 3 start方法只是說我準備好了,進入就緒狀態了,等待排程後才進入執行狀態 4...

JAVA學習筆記 多執行緒(二)執行緒常用方法

thread類包含的方法 start 啟動執行緒 isalive 判斷執行緒當前是否正在執行 setpriority 設定優先順序 jion 使乙個執行緒等待另乙個執行緒結束 sleep mills long 指定執行緒休眠指定毫秒 yield 使執行緒暫停並允許執行其他程序 wait 和notif...