【Java多線程學習筆記】《Java多線程編程核心技術》第一章知識點彙集

1、多線程是異步的,線程的調用是隨機的

2、創建線程的兩種方法:

  1. 繼承Thread類,重寫run()方法;
  2. 實現Runnable接口,重新run()方法;
  3. 如下圖,Thread.java類也實現了Runnable接口

    

3、Thread.java類的start()方法通知“線程規劃器”此線程已經準備就緒,等待調用線程對象的run()方法。

多次調用線程start()方法,會出現Exception in thread "main" java.lang.IllegalThreadStateException。

4、執行start()方法的順序不代表線程啓動的順序。因爲線程的調度是隨機的

5、currentThread()方法可返回代碼段正在被哪個線程調用的信息

6、isAlive()判斷當前的線程是否處於活動狀態。

活動狀態就是線程已經啓動且尚未終止。就是正在運行或準備開始運行狀態。

7、sleep()是讓當前“正在執行的線程”休眠(暫停執行)。“正在執行的線程”是指this.currentThread()返回的線程。

8、Java 3種終止正在運行的線程方法:

  1. 使用退出標誌,是線程正常退出,也就是當run()方法完成後線程終止
  2. 使用stop()方法強行終止,不推薦。因爲stop和suspend及resume都是過期作廢的方法,使用可能造成不可預料的問題
  3. 使用interrupt方法中斷線程

9、調用interrupt()方法僅僅是在當前線程種打一個標記,並不是真的停止線程

10、interrupted():測試當前線程是否已經中斷。interrupted()具有清除狀態的功能

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

12、線程優先級1-10。線程優先級具有繼承性,比如A線程啓動B線程,則B線程的優先級和A一致

13、優先級高的線程不一定每次都先執行完。不確定性和隨機性

14、在Java中有兩種線程,用戶線程、守護(Daemon)線程。

15、典型的守護線程就是垃圾回收線程,當進程中不存在非守護線程了,則垃圾回收線程也就沒必要存在,會自動銷燬。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章