Java多線程“敲門磚”

簡述線程

       操作系統支持進程的概念,所有運行中的任務通常就是一個程序,每個運行中的程序就是一個進程。當一個程序運行時,其內部可能包含有多個順序執行流,每一個順序執行流就被稱爲“線程”。
       多線程擴展了多進程的概念,使得一個進程可以同時執行多個任務。線程(Thread)也被稱作輕量級進程(Lightweight Process)。

再究多線程

多線程是Java中不可避免地一個重要主體,有如下優點:

  • 共享內存
  • 相較於創建進程,創建線程的代價更小
  • Java語言內置多線程功能的支持,而不是單純的作爲底層操作系統的調度方式,簡化編程方式

線程剖析-狀態圖

線程狀態圖如下:
在這裏插入圖片描述
說明:

  • 新建狀態(New):線程被創建之後就進入了新建狀態,比如:Thread thread=new Thread();
  • 就緒狀態(Runnable):也被稱爲“可執行狀態”。線程對象被創建後,其他線程調用該對象的start()方法來啓動線程。比如:thread.start(); 處於就緒狀態的線程,隨時可能被cpu調度執行
  • 運行狀態(Running):線程獲取CPU資源後,就從就緒狀態轉換到運行狀態
  • 阻塞狀態(Blocked):阻塞狀態是因爲某種原因放棄CPU的使用,暫停運行,直到線程進入就緒態,纔有機會進入運行態,如:
    • 等待阻塞–>通過調用線程的wait方法,讓線程等待某工作的完成
    • 同步阻塞–>線程在獲取synchronized同步鎖失敗,會進入同步阻塞狀態
    • 其他阻塞–>通過調用sleep或者join或者發出了IO請求時,進入阻塞狀態,當處理完畢後就會重新進入就緒態
  • 死亡狀態(Dead):線程執行結束或者異常退出了run方法,結束生命週期

續:

線程的生命週期受到一些類或者方法的影響,如:Object類、Thread類等。

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