1. 程式人生 > >20165317第八周學習總結

20165317第八周學習總結

thread 時間 中斷 恢復 使用權 exc 上傳 操作 開始

教材內容

  • 程序:一段靜態的代碼

  • 進程:程序的一次動態執行過程,即從代碼加載、執行至執行完畢的一個完整過程。

  • 線程:比進程更小的執行單位,一個進程在其執行過程中,可以產生多個線程。

  • 線程間可以共享進程中的某些內存單元(包括代碼與數據),線程的中斷與恢復可以更加節省系統的開銷。

  • 建的線程在它的一個完整的生命周期中通常要經歷如下的四種狀態:

新建: 當一個Thread類或其子類的對象被聲明並創建時,新生的線程對象處於新建狀態。

運行 :線程必須調用start()方法(從父類繼承的方法)通知JVM,這樣JVM就會知道又有一個新一個線程排隊等候切換了。一旦輪到它來享用CPU資源時,此線程的就可以脫離創建它的主線程獨立開始自己的生命周期了。

中斷:有4種原因的中斷:

(1)JVM將CPU資源從當前線程切換給其他線程,使本線程讓出CPU的使用權處於中斷狀態。

(2)線程使用CPU資源期間,執行了sleep(int millsecond)方法,使當前線程進入休眠狀。

(3)線程使用CPU資源期間,執行了wait()方法。

(4)線程使用CPU資源期間,執行某個操作進入阻塞狀態。

死亡 :處於死亡狀態的線程不具有繼續運行的能力。線程釋放了實體。

  • 線程的常用方法:

start() : 線程調用該方法將啟動線程,使之從新建狀態進入就緒隊列排隊,一旦輪到它來享用CPU資源時,就可以脫離創建它的線程獨立開始自己的生命周期了。

run(): Thread類的run()方法與Runnable接口中的run()方法的功能和作用相同,都用來定義線程對象被調度之後所執行的操作,都是系統自動調用而用戶程序不得引用的方法。

sleep(int millsecond): 優先級高的線程可以在它的run()方法中調用sleep方法來使自己放棄CPU資源,休眠一段時間。

isAlive(): 線程處於“新建”狀態時,線程調用isAlive()方法返回false。在線程的run()方法結束之前,即沒有進入死亡狀態之前,線程調用isAlive()方法返回true。

currentThread():該方法是Thread類中的類方法,可以用類名調用,該方法返回當前正在使用CPU資源的線程。

interrupt() :一個占有CPU資源的線程可以讓休眠的線程調用interrupt()方法“吵醒”自己,即導致休眠的線程發生InterruptedException異常,從而結束休眠,重新排隊等待CPU資源

代碼上傳

技術分享圖片

20165317第八周學習總結