JAVA多線程編程核心技術-學習筆記

  • 進程和線程
    1. 進程是操作系統拓撲管理的基本單位
    2. 線程是進程中,獨立運行的子任務
  • 線程啓動
    1. 在多線程中, 代碼的順序 , **[不是]**線程的執行順序.
    2. start()和run()
      1. start()是啓動新線程執行方法,異步
      2. run()是當前線程執行方法,同步.和調用其他正常方法一樣
    3. Thread和Runnable
      1. 兩種方式在工作時性質是一樣的, 沒有本質區別
      2. Runable 接口
        1. 理解: 異步類的標識及規範
        2. 實現此接口,並重寫run()方法.纔是異步方法
        3. 需要配合Thread類,才能實現任務調度,異步執行
      3. Thread
        1. 理解: 線程調度,線程狀態
          1. 調度
            1. 啓動
            2. 暫停
            3. ......
          2. 狀態
            1. 屬性: 名稱,ID,狀態
            2. 實時: 是否存活,是否被打斷
            3. 等等
          3. 其他一些管理功能接口

          這麼看來,Thread和Runnable是完全不同的兩個東西.Thread實現Runnable真的是多此一舉.

        2. Thread類實現了Runnable接口
        	public class Thread implements Runnable
        
        Thread包含Runnable接口功能,但不如Runnable靈活. 繼承Thread類,也可以實現run()方法,但單繼承侷限.
  • 數據共享
    1. 線程間的對象數據不共享

    從JVM的角度去理解這個問題,變量的指針是存在虛擬機棧中的,而虛擬機棧是線程隔離的,每個線程,都是新的棧幀.相互隔離.

    1. 靜態數據可共享

    靜脈常量在方法區中 , 線程直接訪問方法區, 方法區線程共享 .

  • 如何使線程暫停
  • 如何使線程停止
  • 線程優先級
  • 線程安全相關問題
  • 發表評論
    所有評論
    還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
    相關文章