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

  1. 進程和線程
    1. 進程是操做系統拓撲管理的基本單位
    2. 線程是進程中,獨立運行的子任務
  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()方法,但單繼承侷限.
  3. 數據共享
    1. 線程間的對象數據不共享

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

    1. 靜態數據可共享

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

  4. 如何使線程暫停
  5. 如何使線程中止
  6. 線程優先級
  7. 線程安全相關問題
相關文章
相關標籤/搜索