系統中線程之間的狀態轉換

2021-10-09 09:27:26 字數 344 閱讀 8820

執行緒在被建立後處於new狀態,當其他執行緒呼叫了新建立執行緒的start()方法,新執行緒就處於就緒(runnable)狀態,這個時候我們需要注意的時,此時執行緒並不能直接開始執行,它必須等待cpu資源,此時處於準備(ready)狀態,當其獲得cpu資源時,執行緒狀態轉變為執行(running)狀態。

當執行緒執行到由synchronized修飾的同步方法或者同步**塊時,如果執行緒正常獲得鎖,執行緒正常執行,當執行緒無法獲得鎖時,執行緒的狀態就變為blocked狀態,當執行緒再次成功獲得鎖後,執行緒進入就緒狀態。

執行緒在執行過程時還可能進入等待(waitable)狀態,等待分為超時等待和不超時等待,兩種情況都可以使用notify方法喚醒,執行緒再次進入就緒狀態。

執行緒的狀態以及狀態之間的相互轉換

新建狀態 new 新建立了乙個執行緒物件。就緒狀態 runnable 執行緒物件建立後,其他執行緒呼叫了該物件的start 方法。該狀態的執行緒位於可執行執行緒池中,變得可執行,等待獲取cpu的使用權。執行狀態 running 就緒狀態的執行緒獲取了cpu,執行程式 阻塞狀態 blocked 阻塞狀...

執行緒之間狀態和轉換(新建 就緒 執行 阻塞 死亡)

執行緒在一定條件下,狀態會發生變化。執行緒一共有以下5種狀態 1 新建狀態 new 新建立了乙個執行緒物件。2 就緒狀態 runnable 執行緒物件建立後,其他執行緒呼叫了該物件的start 方法。該狀態的執行緒位於 可執行執行緒池 中,變得可執行,只等待獲取cpu的使用權。即在就緒狀態的程序除c...

執行緒之間和程序之間的同步

今天學習的內容為 利用互斥事件來控制線程之間 程序之間的同步問題。其實,程序之間的同步也就類似於執行緒之間的同步。互斥事件的作用就是為了保證任乙個時間內,只有乙個執行緒對對公共資源進行操作。下面來看一下執行緒之間的同步,如果是在乙個程序內的執行緒同步問題的話。這樣的例子很多,我就舉乙個最簡單的,執行...