Java併發程式設計系列之七 執行緒狀態

2021-07-31 02:16:12 字數 674 閱讀 5499

執行緒的狀態一共有6種,在任意時刻執行緒的狀態只能是其中的一種。正確理解執行緒的狀態有助於我們更容易理解執行緒。具體的執行緒狀態如下:

狀態名稱

說明new

初始狀態,執行緒被構建,但是還沒有呼叫start方法

running

執行狀態

blocked

阻塞狀態,表示執行緒阻塞於鎖

waiting

等待狀態,表示執行緒執行緒進入等待狀態,進入該狀態後需要其他執行緒做出通知動作

time_waiting

超時等狀態狀態,該狀態與waiting不同,它是可以在指定時間內自行返回的

terminated

終止狀態,表示當前執行緒已經執行完畢

這六種狀態是可以相互進行轉化的,下面是具體的轉化過程:

可以看到,執行緒建立之後,呼叫start()方法開始執行。當執行緒執行wait()方法之後,執行緒進入等待狀態。進入等待狀態的執行緒需要依靠其他執行緒的通知才能夠返回到執行狀態,而超時等待狀態相當於在等待狀態基礎上增加了時間的限制,就是說,超過了設定的時間限制就會返回到執行狀態。當執行緒呼叫同步方法的時候,在沒有獲取到鎖的情況下,執行緒會進入阻塞狀態。執行緒在執行runnable的run()方法之後會進入到終止狀態。

Java併發程式設計系列 CountDownLatch

countdownlatch簡介 countdownlatch是基於aqs實現的乙個執行緒同步工具,也稱為閉鎖。它的作用是讓乙個或者多個執行緒等待某個事件的發生。簡單的理解為countdownlatch有乙個正數計數器,countdown方法對計數器做減操作,await方法等待計數器達到0。所有aw...

Java併發程式設計系列 CyclicBarrier

cyclicbarrier簡介 cyclicbarrier也是基於reentrantlock和condition的乙個同步工具類,它的作用是讓一些執行緒到達某個公共屏障點時,等待未到達的執行緒。當所有執行緒到達屏障點時,繼續往下執行。先看乙個例子 public class cyclicbarrier...

java併發程式設計 執行緒封閉

執行緒封閉有三種方式 ad hoc執行緒封閉 棧封閉 threadlocal類 其中ad hoc執行緒封閉一般由程式設計師自己實現,很少用,暫不介紹。將物件封閉在區域性變數中,只有區域性變數才能訪問,保證執行緒安全。下面我們來看一段簡單的 public class animals return nu...