1. 程式人生 > >java線程的一些基礎小知識

java線程的一些基礎小知識

art 進入 -- 新建 效率 時間 java線程 實例 可能


--------------------------------------------------------------------------------------------------
線程的生命周期:
新建,就緒,執行,阻塞,消亡

通過 new 關鍵字,線程被創建, 進入新建狀態;
線程調用start () 方法時,線程進入就緒狀態, 意味著線程有權利獲取cup的時間片,等待jvm調度;
當線程獲取cup時,線程被執行,體現就是線程的run()方法被執行;
當線程的run() 方法沒有執行完,卻失去了cup時間片,此時線程進入阻塞狀態,等待下次被調度;
當線程的run() 方法執行結算,線程死亡;

多線程並不能提高程序的執行效率,而是提高程序被cup加載的使用概率 , 多線程並不是並行執行;
--------------------------------------------------------------------------------------------------
多線程:指的是這個程序(一個進程)運行時產生了不止一個線程
並行與並發:
並行:多個cpu實例或者多臺機器同時執行一段處理邏輯,是真正的同時。
並發:通過cpu調度算法,讓用戶看上去同時執行,實際上從cpu操作層面不是真正的同時。並發往往在場景中有公用的
資源,那麽針對這個公用的資源往往產生瓶頸,我們會用TPS或者QPS來反應這個系統的處理能力。
--------------------------------------------------------------------------------------------------
線程的調度與控制:
線程的調度模型分為: 分時調度模型和搶占式調度模型,Java使用搶占式調度模型
-
分時調度模型: 所有線程輪流使用CPU的使用權,平均分配每個線程占用CPU的時間片
搶占式調度模型: 優先讓優先級高的線程使用CPU,如果線程的優先級相同,那麽會隨機選擇一個,優先級高的線程獲取的CPU時間片相對多一些.
--------------------------------------------------------------------------------------------------
如何避免死鎖:
將相同的資源,可能會產生死鎖的資源打包成一組,放在一個公共的鎖裏面!
--------------------------------------------------------------------------------------------------

java線程的一些基礎小知識