1. 程式人生 > >201711671103《JAVA程式設計》第十二章多執行緒機制學習筆記

201711671103《JAVA程式設計》第十二章多執行緒機制學習筆記

教材學習內容總結

1.執行緒是依附於程序的,程序是分配資源的最小單位,執行緒是比程序更小的執行單位。一個程序可以產生多個執行緒,形成多條執行線索。每條線索,即每個執行緒也有它自身的產生,存在和消亡過程,也是一個動態的概念。

2.JAVA 中的多執行緒機制:多執行緒是指一個應用程式同時存在好幾個執行體,在幾條不同的執行線索中共同工作的情況。

3.Java虛擬機器中的執行緒排程器負責管理執行緒,在採用時間片的系統中,每個執行緒都有機會獲得CPU的使用權。當執行緒使用CPU資源的時間到時後,即使執行緒沒有完成全部操作,java排程器也會中斷當前執行緒的執行,把CPU使用權切換給下一個執行緒,當前執行緒將等待CPU資源的下一次輪迴,然後從中斷處繼續執行。

4.java使用Thread類及其子類的物件來表示執行緒,新建的執行緒在它的一個完整生命期要經歷以下幾種狀態:

①. 新建(New):當建立執行緒後處於該狀態,已經有了相應的記憶體空間和其他資源。 
②.執行(Running):建立執行緒後呼叫start()方法後,當JVM將CPU使用權切換給執行緒時,執行緒得到CPU資源後將處於執行狀態。 
③中斷(Block):(1)JVM將CPU資源從當前執行緒切換給其他執行緒,本執行緒處於中斷狀態;

                              (2)執行緒在使用CPU資源期間,執行了sleep方法,使執行緒進入休眠狀態;

                              (3)執行緒在使用CPU資源期間,執行了wait方法,使執行緒進入等待狀態,這時需要其他執行緒 呼叫notify()方                                        法通知它,使它重新進到執行緒佇列中等待CPU資源的下一次輪迴,然後從中斷處繼續執行;

                               (4)執行中的執行緒如果遇到讀寫或者其他堵塞條件,將轉入阻塞狀態 ,此時只有當引起阻塞的原因消除後,                                        執行緒才能重新進到執行緒佇列中等待CPU資源的下一次輪迴,然後從中斷處繼續執行;
④死亡(Terminate):當執行緒遇到異常即強制run()方法結束或者執行完run()方法中的全部語句則執行緒不再具有繼續執行的能力,進入死亡狀態。

5.執行緒排程和優先順序:java虛擬機器中的執行緒排程器負責管理執行緒,排程器把執行緒的優先順序分為10個級別,分別用Thread類中的類常量表示。排程器的任務是使高優先順序的執行緒能始終執行,一旦時間片有空閒,則使具有同等優先順序的執行緒輪流使用時間片。如AB執行緒級別高於CD執行緒,則java排程器首先輪流執行A和B,等到A,B都執行完畢進入死亡狀態,才輪流執行CD。

6.執行緒的常用方法:

①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資源。

7.執行緒同步就是若干個執行緒都需要使用一個synchronized修飾的方法.即程式中的若干個執行緒都需要使用一個方法,而這個方法用synchronized給予了修飾。多個執行緒呼叫synchronized方法必須遵守同步機制:當一個執行緒使用這個方法時,其他執行緒想使用這個方法時就必須等待,直到執行緒使用完該方法。在使用多執行緒解決許多實際問題時,可能要把某些修改資料的方法用關鍵字synchronized來修飾。

8.當java程式包含圖形使用者介面(GUI)時,java虛擬機器在執行應用程式時會自動啟用更多的執行緒,其中有兩個重要的執行緒:AWT-Eventquecue和AWT-Windows。AWT-Eventquecue負責處理CUI事件,AWT-Windows負責將窗體或者元件繪製到桌面。

9.守護程序(Daemon)是執行在後臺的一種特殊程序。它獨立於控制終端並且週期性地執行某種任務或等待處理某些發生的事件。