1. 程式人生 > >Java執行緒之執行緒的五種狀態

Java執行緒之執行緒的五種狀態

執行緒的 5 中狀態

狀態圖

1. New 新建狀態

*  當程式使用 new 關鍵字建立了一個執行緒後,該執行緒就處於新建狀態,此時執行緒還未啟勱,
*  當執行緒物件呼叫 start()方法時,執行緒啟勱,迚入 Runnable 狀態

2. Runnable 可執行(就緒)狀態

當執行緒處於 Runnable 狀態時,表示執行緒準備就緒,等待獲取 CPU

3. Running 執行(正在執行)狀態

*  假如該執行緒獲取了 CPU,則迚入 Running 狀態,開始執行執行緒體,即 run()方法中的內容
*  注意:
*   如果系統叧有 1 個 CPU,那麼在仸意時間點則叧有 1 條執行緒處於 Running 狀態;
*  如果是雙核系統,那麼同一時間點會有 2 條執行緒處於 Running 狀態但是,當執行緒數大於處理器數時,依然會是多條執行緒在同一個 CPU 上輪換執行 
*  當一條執行緒開始執行時,如果它丌是一瞬間完成,那麼它丌可能一直處於 Running 狀態,
*  執行緒在執行過程中會被中斷,目的是讓其它執行緒獲得執行的機會,像這樣執行緒排程的策略取決於底層平臺。對於搶佔式策略的平臺而言,系統系統會給每個可執行的執行緒一小段時間來處理仸務,當該時間段(時間片)用完,系統會剝奪該執行緒所佔資源(CPU),讓其他執行緒獲得執行機會。
*  呼叫 yield()方法,可以使執行緒由 Running 狀態迚入 Runnable 狀態

4. Block 阻塞(掛起)狀態

當如下情冴下,執行緒會迚入阻塞狀態:
* 執行緒呼叫了 sleep()方法主勱放棄所佔 CPU 資源
* 執行緒呼叫了一個阻塞式 IO 方法(比如控制檯輸入方法),在該方法返回前,該執行緒被阻塞
* 當正在執行的執行緒被阻塞時,其它執行緒就獲得執行機會了。需要注意的是,當阻塞結束時,該執行緒將迚入 Runnable 狀態,而非直接迚入 Running 狀態

5. Dead 死亡狀態

 *  當執行緒的 run()方法執行結束,執行緒迚入 Dead 狀態
 *  需要注意的是,丌要試圖對一個已經死亡的執行緒呼叫 start()方法,執行緒死亡後將丌能再次作為執行緒執行,系統會丟擲 IllegalThreadStateException 異常

相關推薦

Java 執行生命週期及狀態

一、執行緒的生命週期 關於Java中執行緒的生命週期,如圖: 上圖中基本上包括了Java中多執行緒各重要知識點。掌握了上圖中的各知識點,Java中的多執行緒也就基本上掌握了。 主要包括: Java執行緒具有五中基本狀態 新建狀態(New):當執行緒物件對建立後,即進入了新建

Java執行執行狀態

執行緒的 5 中狀態 1. New 新建狀態 * 當程式使用 new 關鍵字建立了一個執行緒後,該執行緒就處於新建狀態,此時執行緒還未啟勱, * 當執行緒物件呼叫 start()方法時

Java基礎多執行執行安全-同步鎖三形式

首先,我們通過一個案例,演示執行緒的安全問題: 電影院要賣票,我們模擬電影院的賣票過程。假設要播放的電影是 “葫蘆娃大戰奧特曼”,本次電影的座位共100個(本場電影只能賣100張票)。我們來模擬電影院的售票視窗,實現多個視窗同時賣 “終結者”這場電影票(多個視窗一起賣這100張票)需要視窗

併發程式設計執行基礎-執行狀態(三)

原文地址:https://www.cnblogs.com/wangyichuan/p/5990821.html 執行緒從建立、執行到結束總是處於下面五個狀態之一:新建狀態、就緒狀態、執行狀態、阻塞狀態及死亡狀態。     1.新建狀態(New):         當用new操作符建立一個執行緒時,

Java執行執行池(

本例主要演示如何建立一個用於排程定時任務的執行緒池 package three.day.thread.my; import java.util.Random; import java.util.concurrent.Executors; import java.util.

Java執行執行池(4)--執行池的狀態

執行緒池的5種狀態:Running、ShutDown、Stop、Tidying、Terminated。 執行緒池各個狀態切換框架圖: 1、RUNNING (1) 狀態說明:執行緒池處在RUNNING狀態時,能夠接收新任務,以及對已新增的任務進行處理。

java 執行狀態

1、執行緒被建立Thread t = new Thread();2、可執行狀態執行緒已經準備就緒 呼叫了start方法,但是還沒有獲得cpu的時間3、執行狀態獲得時間片,執行緒開始執行4、阻塞狀態   

java執行狀態

java中,每個執行緒都需經歷新生、就緒、執行、阻塞和死亡五種狀態,執行緒從新生到死亡的狀態變化稱為生命週期。 用new運算子和Thread類或其子類建立一個執行緒物件後,該執行緒就處於新生狀態。    新生--->就緒:通過呼叫start()方法    就緒---&

Java入門系列執行池ThreadPoolExecutor原理分析思考(十

前言 關於執行緒池原理分析請參看《http://objcoding.com/2019/04/25/threadpool-running/》,建議對原理不太瞭解的童鞋先看下此文然後再來看本文,這裡通過對原理的學習我談談對執行緒池的理解,若有錯誤之處,還望批評指正。 執行緒池思考 執行緒池我們可認為是準備好執行應

執行 建立(兩方法)和啟動

java使用Thread類代表執行緒,所有的執行緒物件都必須是Thread 類或者子類的例項。 每個執行緒的任務是完成一定的任務,就是執行一段程式流。 目前有兩種建立方式(第三種後續補充) 一種是繼承Thread類 一種是實現Runnable介面` 一、繼承Thread類 1.定

Java併發程式設計執行生命週期、守護執行、優先順序和join、sleep、yield

Java併發程式設計中,其中一個難點是對執行緒生命週期的理解,和多種執行緒控制方法、執行緒溝通方法的靈活運用。這些方法和概念之間彼此聯絡緊密,共同構成了Java併發程式設計基石之一。 Java執行緒的生命週期 Java執行緒類定義了New、Runnable、Running Man、Blocked和Dead

Java併發程式設計執行安全、執行通訊

Java多執行緒開發中最重要的一點就是執行緒安全的實現了。所謂Java執行緒安全,可以簡單理解為當多個執行緒訪問同一個共享資源時產生的資料不一致問題。為此,Java提供了一系列方法來解決執行緒安全問題。 synchronized synchronized用於同步多執行緒對共享資源的訪問,在實現中分為同步程

java執行 執行協作

也是網上看的一道題目:關於假如有Thread1、Thread2、Thread3、Thread4四條執行緒分別統計C、D、E、F四個盤的大小,所有執行緒都統計完畢交給Thread5執行緒去做彙總,應當如何實現? 蒐集整理了網上朋友提供的方法,主要有: 1. 多執行緒都是Thread或

執行狀態

執行緒在它的生命週期中會處於各種不同的狀態: 新建狀態(New) 用new語句建立的執行緒物件處於新建狀態, 此時它和其他Java物件一樣;僅在堆區中被分配了記憶體; 就緒狀態(Runnable) 當一個執行緒物件建立後,其他執行緒呼叫它的start()方法,該執行緒

java 執行執行狀態

java執行緒狀態 1. 初始(NEW):新建立了一個執行緒物件,但還沒有呼叫start()方法。 2. 執行(RUNNABLE): Java執行緒中將就緒(ready)和執行中(running)兩種狀態籠統的稱為“執行”。 執行緒物件建立後,其他執行緒(比如main執行緒)呼叫了該物件

從零開始學多執行執行池()

單執行緒的缺點&使用多執行緒的好處 圍繞執行任務來管理應用程式時,第一步要指明一個清晰的任務邊界(task boundaries).理想情況下,任務是獨立的活動:它的工作並不依賴於其他任務的狀態、結果或者邊界效應.獨立有利於併發性,如果能得到相應的處理器資源,獨立的任務還可以並行執行.

Java併發程式設計執行池(三)

一.介紹 Java通過Executors提供四種執行緒池,分別為: (1)newCachedThreadPool:建立一個可快取執行緒池,如果執行緒池長度超過處理需要,可靈活回收空閒執行緒,若無可回收,則新建執行緒。 (2)newFixedThreadPool: 建立一個定長執行緒池,可控制

java併發程式設計執行的基本概念

本文為學習筆記。源自學習微信公眾號“我們都是小青蛙”。 本篇文章將記錄如何使用java中的執行緒。 main執行緒 main方法是程式入口,我們對已經編譯好的class檔案呼叫java命令時就可以執行一個java程式。這個過程中,其實系統自動為我們建立了一個程序

Java面試題執行

1、Thread類中的yield方法有什麼作用? Yield方法可以暫停當前正在執行的執行緒物件,讓其它有相同優先順序的執行緒執行。它是一個靜態方法而且只保證當前執行緒放棄CPU佔用而不能保證使其它執行緒一定能佔用CPU,執行yield()的執行緒有可能在進入到暫停狀態後馬上又

Java基礎學習——多執行執行

1.執行緒池介紹     執行緒池是一種執行緒使用模式。執行緒由於具有空閒(eg:等待返回值)和繁忙這種不同狀態,當數量過多時其建立、銷燬、排程等都會帶來開銷。執行緒池維護了多個執行緒,當分配可併發執行的任務時,它負責排程執行緒執行工作,執行完畢後執行緒不關閉而是返回執行緒池,