国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

JavaEE之多線程編程:3. 線程的狀態(tài)(易懂?。?/h1>

這篇具有很好參考價(jià)值的文章主要介紹了JavaEE之多線程編程:3. 線程的狀態(tài)(易懂?。?。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

一、關(guān)于線程的狀態(tài)

進(jìn)程最核心的狀態(tài),一個(gè)是就緒狀態(tài),一個(gè)是阻塞狀態(tài)(對(duì)于線程同樣使用)。
以線程為單位進(jìn)行調(diào)度的。
在Java中,又給線程賦予了一些其他的狀態(tài)。

線程的狀態(tài)是一個(gè)枚舉類(lèi)型 Thread.State

public class ThreadState {
    public static void main(String[] args) {
        for (Thread.State state : Thread.State.values()) { //遍歷枚舉中的每個(gè)元素
            System.out.println(state);
       }
   }
}

二、觀察線程的所有狀態(tài)

線程的狀態(tài)一共有6個(gè):

  • NEW:安排了工作, 還未開(kāi)始行動(dòng)。(Thread對(duì)象已經(jīng)有了,.start()方法還沒(méi)調(diào)用)
  • TERMINATED:工作完成了。(Thread對(duì)象還在,內(nèi)核中的線程已經(jīng)沒(méi)了)
  • RUNNABLE:可工作的,又可以分成正在工作中和即將開(kāi)始工作。(就緒狀態(tài) 線程已經(jīng)在cpu上執(zhí)行了/線程正在排隊(duì)等待上cpu執(zhí)行)
  • TIMED_WAITING:表示排隊(duì)等待其他事情(阻塞,由于sleep這種固定的方式產(chǎn)生的阻塞)
  • WAITING:表示排隊(duì)等待其他事情(阻塞,由于wait這種不固定時(shí)間的方式產(chǎn)生的阻塞)
  • BLOCKED:表示排隊(duì)等待其他事情(阻塞,由于鎖競(jìng)爭(zhēng)導(dǎo)致的阻塞)

后三個(gè)都是阻塞狀態(tài),是把三種不同的阻塞狀態(tài)的原因給拎出來(lái)了。這樣后續(xù)定位“線程卡死”問(wèn)題的時(shí)候,就很容易通過(guò)狀態(tài)來(lái)初步確定卡死的原因是什么了。

1. NEW狀態(tài)

并沒(méi)有調(diào)用start() 也并沒(méi)有調(diào)用線程,此時(shí)它對(duì)象里面的狀態(tài)就是new狀態(tài)(開(kāi)始狀態(tài))。

 public static void main(String[] args) {
        Thread t = new Thread(() -> {
            while (true) {

            }
        });
        //在調(diào)用 start 之前獲取狀態(tài),此時(shí)就是NEW狀態(tài)
        System.out.println(t.getState()); //并沒(méi)有調(diào)用start() 也并沒(méi)有調(diào)用線程,此時(shí)它對(duì)象里面的狀態(tài)就是new狀態(tài)
        
//運(yùn)行結(jié)果:NEW 

2. TERMINATED狀態(tài)

在線程執(zhí)行結(jié)束之后,獲取線程狀態(tài),此時(shí)是TERMINARED狀態(tài)(結(jié)束狀態(tài))。

  public static void main(String[] args) throws InterruptedException {
        Thread t = new Thread(() -> {
         
        });
        t.start();
        t.join(); //通過(guò)join方法進(jìn)行等待
        //在線程執(zhí)行結(jié)束之后,獲取線程的狀態(tài),此時(shí)是TERMINARED狀態(tài)
        System.out.println(t.getState());

 //執(zhí)行結(jié)果:TERMINARED       

3. RUNNABLE狀態(tài)

表示此線程正在運(yùn)行當(dāng)中,或者它隨時(shí)準(zhǔn)備去運(yùn)行,此時(shí)它就是就緒狀態(tài)。

public static void main(String[] args) throws InterruptedException {
        Thread t = new Thread(() -> {
            while (true) { //此線程全速運(yùn)行

            }
        });
        
        t.start();
        for (int i = 0; i < 5; i++) {
            System.out.println(t.getState());
            Thread.sleep(1000); //主線程中,每隔1秒鐘打印一次
        }
    }

//運(yùn)行結(jié)果:
RUNNABLE
RUNNABLE
RUNNABLE
RUNNABLE
RUNNABLE

//且RUNNABLE每1s中運(yùn)行一次

4. TIMED_WAITING

表示指定一定時(shí)間來(lái)進(jìn)行等待。

 public static void main(String[] args) throws InterruptedException {
        Thread t = new Thread(() -> {
            while (true) {
                try {
                    Thread.sleep(1000); //等待1s
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });
        t.start();
        for (int i = 0; i < 5; i++) {
            System.out.println(t.getState());
            Thread.sleep(1000);
        }

    }
}


//輸出結(jié)果:
RUNNABLE
TIMED_WAITING
TIMED_WAITING
TIMED_WAITING
TIMED_WAITING

//設(shè)置了等待1s再執(zhí)行,所以第1s沒(méi)有執(zhí)行到,打印主線程的代碼

上述內(nèi)容,是多進(jìn)程中的四種狀態(tài)。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-805475.html

到了這里,關(guān)于JavaEE之多線程編程:3. 線程的狀態(tài)(易懂!)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Java EE初階三 】線程的狀態(tài)與安全(下)

    【Java EE初階三 】線程的狀態(tài)與安全(下)

    ??????? ?線程安全 : 某個(gè)代碼,不管它是單個(gè)線程執(zhí)行,還是多個(gè)線程執(zhí)行,都不會(huì)產(chǎn)生bug,這個(gè)情況就成為“線程安全”。 ???????? 線程不安全 : 某個(gè)代碼,它單個(gè)線程執(zhí)行,不會(huì)產(chǎn)生bug,但是多個(gè)線程執(zhí)行,就會(huì)產(chǎn)生bug,這個(gè)情況就成為 “線程不安全”,或者

    2024年02月03日
    瀏覽(20)
  • JavaEE初階:Java線程的狀態(tài)

    JavaEE初階:Java線程的狀態(tài)

    目錄 獲取當(dāng)前線程引用 休眠當(dāng)前線程 ?線程的狀態(tài) 1.NEW? ? ? ? ? ?? ? 2.TERMINATED? 3.RUNNABLE 4.WAITING 5.TIMED_WAITING 6.BLOCKED 多線程的意義 單線程 ?多線程 這個(gè)方法返回當(dāng)前線程的引用。但是我們會(huì)對(duì)static有疑惑,這其實(shí)是一個(gè)靜態(tài)方法,更好的說(shuō)法是這是一個(gè) 類(lèi)方法, 調(diào)用這

    2024年02月11日
    瀏覽(24)
  • JavaEE:多線程(2):線程狀態(tài),線程安全

    JavaEE:多線程(2):線程狀態(tài),線程安全

    目錄 線程狀態(tài) 線程安全 線程不安全 加鎖 互斥性 可重入? 死鎖 死鎖的解決方法? Java標(biāo)準(zhǔn)庫(kù)中線程安全類(lèi) 內(nèi)存可見(jiàn)性引起的線程安全問(wèn)題 等待和通知機(jī)制 線程餓死 wait notify 就緒:線程隨時(shí)可以去CPU上執(zhí)行,也包含在CPU上執(zhí)行的線程 阻塞:這個(gè)線程暫時(shí)不方便去CPU上執(zhí)行

    2024年01月23日
    瀏覽(12)
  • 互聯(lián)網(wǎng)編程之多線程/線程池TCP服務(wù)器端程序設(shè)計(jì)

    互聯(lián)網(wǎng)編程之多線程/線程池TCP服務(wù)器端程序設(shè)計(jì)

    目錄 需求 多線程TCP服務(wù)器 線程池TCP服務(wù)器 測(cè)試 日志模塊 多線程TCP服務(wù)器(30分): 設(shè)計(jì)編寫(xiě)一個(gè)TCP服務(wù)器端程序,需使用多線程處理客戶端的連接請(qǐng)求??蛻舳伺c服務(wù)器端之間的通信內(nèi)容,以及服務(wù)器端的處理功能等可自由設(shè)計(jì)拓展,無(wú)特別限制和要求。 線程池TCP服務(wù)器

    2024年02月11日
    瀏覽(20)
  • 【JavaEE基礎(chǔ)學(xué)習(xí)打卡02】是時(shí)候了解Java EE了!

    【JavaEE基礎(chǔ)學(xué)習(xí)打卡02】是時(shí)候了解Java EE了!

    ?? 本系列教程適用于 Java Web 初學(xué)者、愛(ài)好者,小白白。我們的天賦并不高,可貴在努力,堅(jiān)持不放棄。堅(jiān)信量最終引發(fā)質(zhì)變,厚積薄發(fā)。 ?? 文中白話居多,盡量以小白視角呈現(xiàn),幫助大家快速入門(mén)。 ?? 我是 蝸牛老師 ,之前網(wǎng)名是 Ongoing蝸牛 ,人如其名,干啥都慢,所

    2024年02月12日
    瀏覽(22)
  • 【JavaEE基礎(chǔ)學(xué)習(xí)打卡03】Java EE 平臺(tái)有哪些內(nèi)容?

    【JavaEE基礎(chǔ)學(xué)習(xí)打卡03】Java EE 平臺(tái)有哪些內(nèi)容?

    ?? 本系列教程適用于Java Web初學(xué)者、愛(ài)好者,小白白。我們的天賦并不高,可貴在努力,堅(jiān)持不放棄。堅(jiān)信量最終引發(fā)質(zhì)變,厚積薄發(fā)。 ?? 文中白話居多,盡量以小白視角呈現(xiàn),幫助大家快速入門(mén)。 ?? 我是 蝸牛老師 ,之前網(wǎng)名是 Ongoing蝸牛 ,人如其名,干啥都慢,所以

    2024年02月12日
    瀏覽(20)
  • 【JavaEE】_線程的狀態(tài)與轉(zhuǎn)移

    【JavaEE】_線程的狀態(tài)與轉(zhuǎn)移

    目錄 1. 線程的狀態(tài) 1.1?NEW 1.2?RUNNABLE 1.3?BLOCKED 1.4?WAITING 1.5?TIMED_WAITING 1.6?TERMINATED ?2. 線程狀態(tài)的轉(zhuǎn)移 在多線程Thread類(lèi)相關(guān)一文中已經(jīng)介紹過(guò)進(jìn)程的狀態(tài):就緒狀態(tài)與阻塞狀態(tài); 若需詳情請(qǐng)查看原文,鏈接如下: 【JavaEE】_多線程Thread類(lèi)及其常用方法-CSDN博客 這個(gè)狀態(tài)決定

    2024年02月22日
    瀏覽(15)
  • JAVA之多線程

    JAVA之多線程

    進(jìn)程是指運(yùn)行中的應(yīng)用程序,每一個(gè)進(jìn)程都有自己獨(dú)立的內(nèi)存空間; 線程是指進(jìn)程中的一個(gè)執(zhí)行流程,有時(shí)也稱為執(zhí)行情景; 一個(gè)進(jìn)程可以由多個(gè)線程組成,即在一個(gè)進(jìn)程中可以同時(shí)運(yùn)行多個(gè)不同的線程,它們分別執(zhí)行不同的任務(wù); 當(dāng)進(jìn)程內(nèi)的多個(gè)線程同時(shí)運(yùn)行,這種運(yùn)行

    2024年02月07日
    瀏覽(23)
  • Java之多線程進(jìn)階

    Java之多線程進(jìn)階

    目錄 一.上節(jié)內(nèi)容復(fù)習(xí) 1.線程池的實(shí)現(xiàn) 2.自定義一個(gè)線程池,構(gòu)造方法的參數(shù)及含義 3.線程池的工作原理 4.拒絕策略 5.為什么不推薦系統(tǒng)提供的線程池 二.常見(jiàn)的鎖策略 1.樂(lè)觀鎖和悲觀鎖 2.輕量級(jí)鎖和重量級(jí)鎖 3.讀寫(xiě)鎖和普通互斥鎖 4.自旋鎖和掛起等待鎖 5.可重入鎖和不可重入

    2024年02月05日
    瀏覽(23)
  • Java之多線程初階

    Java之多線程初階

    目錄 一.進(jìn)程和線程 1.什么是進(jìn)程 2.并發(fā),并行和串行 3.線程和多線程 4.進(jìn)程和線程的區(qū)別(重點(diǎn)) 5.多線程的優(yōu)點(diǎn) 6.多線程的缺點(diǎn) 二.線程的創(chuàng)建 1.繼承Thread類(lèi) 2.實(shí)現(xiàn)Runnable接口重寫(xiě)run()方法 3.通過(guò)匿名內(nèi)部類(lèi)的方式創(chuàng)建Thread和實(shí)現(xiàn)Runnable 4.通過(guò)Lambda表達(dá)式來(lái)實(shí)現(xiàn)一個(gè)線程 三.查看

    2024年02月05日
    瀏覽(16)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包