Java多執行緒之基礎概念

2021-09-02 22:44:25 字數 1122 閱讀 9984

執行緒狀態的扭轉圖如下:

time waiting:限期等待狀態,不會分配cpu時間片,睡眠時間到或等待一定的時間後自動喚醒。以下方法會讓執行緒進入該狀態:

dead:死亡狀態,執行緒正常執行完了或因異常退出了run()方法,該執行緒結束生命週期

interrupt()方法

中斷執行緒,本質是將某執行緒的中斷標誌位設定為true,其他執行緒向某執行緒打招呼要中斷它,那該執行緒是否理會由自己決定(使用thread.getcurrent().isinterrupt()方法判斷)。

講到這裡,涉及中斷的幾個api我們重新來回顧一下:

interrupt()不能中斷在執行中的執行緒,它只能改變中斷狀態而已,至於是否繼續執行還是退出執行緒由被中斷的執行緒自行判斷,可以通過isinterrupted()方法判斷是否被中斷示例**如下:

public

class

interrupteddemo

i++;}

}}public

static

void

main

(string[

] args)

throws interruptedexception

}

上述情況可以根據isinterrupted()函式進行判斷是否被中斷,以便退出執行的執行緒。那如果該執行緒進入阻塞狀態呢,比如呼叫sleep或await方法,該怎麼辦呢?這就是jdk在你使用sleep或await方法時,會強制要求你捕獲interruptexception。因為在阻塞過程中,如果別的執行緒使用interrupt()方法進行中斷該執行緒的話,那麼會進入中斷異常處理流程,這個時候就可順利的退出執行緒,但此時中斷標誌位同時會被置為false,即isinterrupted()方法會返回false而不是true,此時被中斷的執行緒的捕獲異常處理**中有判斷自己的中斷標誌位時要注意!!

java多執行緒 基礎概念

join 方法 在很多情況下,主線程生成並起動了子執行緒,如果子執行緒裡要進行大量的耗時的運算,主線程往往將於子執行緒之前結束,但是如果主線程處理完其他的事務後,需要用到子執行緒的處理結果,也就是主線程需要等待子執行緒執行完成之後再結束,這個時候就要用到join 方法了。wait方法 呼叫obj的w...

java多執行緒程式設計(一基礎概念)

1 程序和執行緒 程序,是乙個正在執行的程式實體,windows下常見的就是 exe,在任務管理器中可以看見很多個程序。它是執行緒的容器。執行緒,是程序中的乙個執行流。在單執行緒程式設計中,我們的程式只有乙個執行流 主線程的main方法。流,表明執行的過程是有順序的,如main函式中的語句需要一條一...

JAVA多執行緒之 執行緒池

執行緒池顧名思義,就是乙個放置執行緒的池子。就跟資料庫連線池差不多。執行緒池通過對併發執行緒的控制,能有效的節省系統資源的浪費,提高系統的效能。學習執行緒池,先了解一下執行緒池的乙個基本結構 executor是乙個介面,其中只有乙個方法,就是execute方法。所以executor實際就是乙個執行緒...