1. 程式人生 > >《Java多執行緒程式設計核心技術》(一)多執行緒技能

《Java多執行緒程式設計核心技術》(一)多執行緒技能

最近閱讀了一本《Java多執行緒程式設計核心技術》,總結了一下每章的知識點:

第一章,java多執行緒技能

知識點:

1,實現多執行緒程式設計的方式主要有兩種:一是繼承Thread類,重新run方法,二是實現Runnable介面,實現run方法,物件作為構造引數傳入Thread物件進行start()啟動。(第二種方式支援多繼承情況)

2,currentThread()方法可以返回程式碼段正在被哪個執行緒呼叫的資訊。
Thread.currentThread().getName();

3,isAlive(),判斷當前的執行緒是否處於活動狀態。thread.isAlive()。

4,sleep()

,在指定的毫秒數內讓當前“正在執行的執行緒”休眠(暫停執行),這個”正在執行的執行緒”是指this.currentThread()返回的執行緒。

5,getId(),取得執行緒的唯一標識。

6,停止執行緒
①使用退出標識,使執行緒正常退出,也就是當run方法完成後執行緒終止。
②使用stop方法強行終止執行緒,已不推薦使用,作廢。
③使用interrupt方法中斷執行緒,但不是立即停止的。
this.interrupted():測試當前執行緒是否已經是中斷狀態,執行後具有將狀態標誌置清除為false的功能。
this.isInterrupted():測試執行緒是否已經中斷狀態,但不清除狀態標誌。
④異常法停止執行緒。
線上程sleep期間,如果執行了interrup方法會報異常。

7,暫停執行緒 suspend,恢復執行緒 resume,方法缺點,極易對公共的同步物件的獨佔,使其他執行緒無法訪問 。

8,yieId(),作用是放棄當前的CPU資源,將它讓給其他任務去佔用CPU執行時間,但放棄時間不確定,有可能剛剛放棄,又馬上獲得CPU時間片。

9,執行緒的優先順序,優先順序較高的執行緒得到的CPU資源越多,java中,執行緒的優先順序分為1-10個等級,超出範圍丟擲異常。JDK中使用3個常量來預置定義優先順序的值,1,5,10。
①執行緒優先順序具有繼承特性,比如A執行緒啟動B執行緒,則B執行緒的優先順序和A是一樣的。
②優先順序具有規則性,可以使用setPriority()方法設定執行緒的優先順序。高優先順序的執行緒總是大部分先執行完,但不代表高優先順序的執行緒全部【先】執行完,CPU儘量將執行資源讓個優先順序比較高的執行緒。(兩個執行緒優先順序差值比較大)
③優先順序具有隨機性。如果兩個執行緒的執行緒優先順序差別不大,高優先順序的不一定先執行完。
④高優先順序的執行的較快。

10,守護執行緒。典型的守護執行緒(GC)就是垃圾回收執行緒。守護執行緒:任何一個守護執行緒都是整個JVM中所有非守護執行緒的“保姆”,只要當前JVM例項中存在任何一個非守護執行緒,守護執行緒就在工作,只有當最後一個非守護執行緒結束時,守護執行緒才會隨著JVM一同結束工作。