1. 程式人生 > >Java執行緒的5種狀態及切換(透徹講解)

Java執行緒的5種狀態及切換(透徹講解)

Java中的執行緒的生命週期大體可分為5種狀態。

NEW:這種情況指的是,通過New關鍵字建立了Thread類(或其子類)的物件

RUNNABLE:這種情況指的是Thread類的物件呼叫了start()方法,這時的執行緒就等待時間片輪轉到自己這,以便獲得CPU;第二種情況是執行緒在處於RUNNABLE狀態時並沒有執行完自己的run方法,時間片用完之後回到RUNNABLE狀態;還有種情況就是處於BLOCKED狀態的執行緒結束了當前的BLOCKED狀態之後重新回到RUNNABLE狀態。

RUNNING:這時的執行緒指的是獲得CPURUNNABLE執行緒,RUNNING狀態是所有執行緒都希望獲得的狀態。

DEAD:處於RUNNING狀態的執行緒,在執行完run方法之後,就變成了DEAD狀態了。

BLOCKED:這種狀態指的是處於RUNNING狀態的執行緒,出於某種原因,比如呼叫了sleep方法、等待使用者輸入等而讓出當前的CPU給其他的執行緒。

處於RUNNABLE狀態的執行緒變為BLOCKED狀態的原因,除了該執行緒呼叫了sleep方法、等待輸入原因外,還有就是在當前執行緒中呼叫了其他執行緒的join方法、當訪問一個物件的方法時,該方法被鎖定等。

相應的,當處於BLocked狀態的執行緒在滿足以下條件時就會由該狀態轉到RUNNABLE狀態,這些條件是:sleep的執行緒醒來(sleep

的時間到了)、獲得了使用者的輸入、呼叫了join的其他執行緒結束、獲得了物件鎖。

一般情況下,都是處於RUNNABLE的執行緒和處於RUNNING狀態的執行緒,互相切換,直到執行完run方法,執行緒結束,進入DEAD狀態。

相關推薦

Java執行5狀態切換(透徹講解)

Java中的執行緒的生命週期大體可分為5種狀態。 ①NEW:這種情況指的是,通過New關鍵字建立了Thread類(或其子類)的物件 ②RUNNABLE:這種情況指的是Thread類的物件呼叫了start()方法,這時的執行緒就等待時間片輪轉到自己這,以便獲得CPU;第二種情況是執行緒在處於RUNNABLE狀

Java執行的6狀態切換(透徹講解)-本文系轉載

Java執行緒的6種狀態及切換(透徹講解) 轉自:https://mp.weixin.qq.com/s/hUOwck4lMp7c_rvY4TTeQQ Java中執行緒的狀態分為6種。 1.  初始(NEW):新建立了一個執行緒物件,但還沒有呼叫start()方法。

Java執行的6狀態切換(透徹講解)

Java中執行緒的狀態分為6種。 1. 初始(NEW):新建立了一個執行緒物件,但還沒有呼叫start()方法。 2. 執行(RUNNABLE):Java執行緒中將就緒(ready)和執行中(running)兩種

[轉載]Java 執行 5 狀態下的執行中斷

[轉載]Java併發之執行緒中斷      前面的幾篇文章主要介紹了執行緒的一些最基本的概念,包括執行緒的間的衝突及其解決辦法,以及執行緒間的協作機制。本篇主要來學習下Java中對執行緒中斷機制的實現。在我們的程式中經常會有一些不達到目的不會退出的執行緒,例如:我們

Java執行的6狀態切換

原文:https://blog.csdn.net/pange1991/article/details/53860651#commentBox Java中執行緒的狀態分為6種。     1. 初始(NEW):新建立了一個執行緒物件,但還沒有呼叫start()方法。

Java執行的6狀態切換透徹講解

來源:https://blog.csdn.net/pange1991/article/details/53860651 Java中執行緒的狀態分為6種。 1.初始(NEW):新建立了一個執行緒物件,但還沒有呼叫start()方法。 2.執行(RUNNABLE):J

Java執行5狀態狀態之間轉換

Thread.sleep(long millis),一定是當前執行緒呼叫此方法,當前執行緒進入阻塞,但不釋放物件鎖,millis後執行緒自動甦醒進入可執行狀態。作用:給其它執行緒執行機會的最佳方式。Thread.yield(),一定是當前執行緒呼叫此方法,當前執行緒放棄獲取的cpu時間片,由執行狀態變會可執行

Java執行的6狀態切換(生命週期)

轉自:https://blog.csdn.net/pange1991/article/details/53860651/ Java中執行緒的狀態分為6種。 1. 初始(NEW):新建立了一個執行緒物件,但還沒有呼叫start()方法。2. 執行(RUNNABLE):Java執行緒中將就緒(r

java 執行池詳解執行池用法介紹

java 執行緒池詳解      Executor框架是一種將執行緒的建立和執行分離的機制。它基於Executor和ExecutorService介面,及這兩個介面的實現類ThreadPoolExecutor展開,Executor有一個內部執行緒池,並提供了將任務傳遞到池中

Java執行池詳解例項

前言 多執行緒的非同步執行方式,雖然能夠最大限度發揮多核計算機的計算能力,但是如果不加控制,反而會對系統造成負擔。執行緒本身也要佔用記憶體空間,大量的執行緒會佔用記憶體資源並且可能會導致Out of Memory。即便沒有這樣的情況,大量的執行緒回收也會給GC帶來很大的壓力

執行狀態

執行緒五種狀態 執行緒,有時被稱為輕量程序(Lightweight Process,LWP),是程式執行流的最小單元。一個標準的執行緒由執行緒ID,當前指令指標(PC),暫存器集合和堆疊組成。另外,執行緒是程序中的一個實體,是被系統獨立排程和分派的基本單位,執行緒自己不擁有系統資源,只擁有一點兒

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

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

java執行池引數說明佇列拒絕策略

 java.util.concurrent.ThreadPoolExecutor,其構造方法1: public ThreadPoolExecutor(int corePoolSize, int maximumP

JAVA執行有哪些狀態,這些狀態之間是如何轉化的?

新建(new):新建立了一個執行緒物件。可執行(runnable):執行緒物件建立後,其他執行緒(比如main執行緒)呼叫了該物件的start()方法。該狀態的執行緒位於可執行執行緒池中,等待被執行緒排程選中,獲取cpu 的使用權 。執行(running):可執行狀態(run

執行概念,狀態狀態之間的關係,實現多執行方法,實現同步執行的方式

1.執行緒概念:是程序中的一個執行控制單元,執行路徑;一個程序中至少有一個執行緒在負責控制程式稱為單執行緒;一個程序中有多個執行路徑時,這個程式稱為多執行緒 2.狀態:就緒,執行,synchronize阻塞,wait和sleep掛起,結束 3.狀態之間的關係:呼叫執行緒的s

執行狀態(新建、就緒、執行、阻塞、死亡)

執行緒的5種狀態:  每個 Java 程式都有一個預設的主執行緒,對於 Java 應用程式,主執行緒是 main()方法執行的線索; 對於 Applet 程式,主執行緒是指揮瀏覽器載入並執行 Java&

java執行池ThreadPoolExecutor原理使用

其構造方法為public class ThreadPoolExecutor extends AbstractExecutorService{<span style="white-space:pre"> </span><div class="li

JAVA執行物件的狀態

JAVA執行緒物件的狀態 1.概述 在Thread類中定義了執行緒的6種狀態:新建態,就緒態、執行態,阻塞態、等待態、終止態。 1)新建態:使用new運算子建立一個執行緒物件(new Thread)後,該執行緒僅僅是一個空物件,系統沒有為它分配資源,該執行緒處於新建態(NEW

Java執行池原始碼解析高質量程式碼案例

引言 本文為Java高階程式設計中的一些知識總結,其中第一章對Jdk 1.7.0_25中的多執行緒架構中的執行緒池ThreadPoolExecutor原始碼進行架構原理介紹以及原始碼解析。第二章則分析了幾個違反Java高質量程式碼案例以及相應解決辦法。如有總結

Java 執行的基本狀態和操作

執行緒的幾種狀態 在Java當中,執行緒通常都有五種狀態,建立、就緒、執行、阻塞和死亡。 第一是建立狀態。在生成執行緒物件,並沒有呼叫該物件的start方法,這是執行緒處於建立狀態。 第二是就緒狀態。當呼叫了執行緒物件的start方法之後,該執行緒就進