最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java 終止線程的4種方式小結(jié)

 更新時(shí)間:2024年05月23日 11:51:16   作者:程序員易晶  
本文主要介紹了java終止線程的4種方式小結(jié),包含布爾標(biāo)志位,interrupt()方法,stop()方法和Thread.interrupt()方法,具有一定的參考價(jià)值,感興趣的可以了解一下

終止線程一般建議采用的方法是讓線程自行結(jié)束,進(jìn)入Dead(死亡)狀態(tài),就是執(zhí)行完run()方法。即如果想要停止一個(gè)線程的執(zhí)行,就要提供某種方式讓線程能夠自動(dòng)結(jié)束run()方法的執(zhí)行。比如設(shè)置一個(gè)標(biāo)志來控制循環(huán)是否執(zhí)行,通過這種方式讓線程離開run()方法。

一、使用布爾標(biāo)志位

在線程的執(zhí)行代碼中,使用一個(gè)布爾類型的標(biāo)志位來標(biāo)識(shí)線程是否需要終止。線程在執(zhí)行過程中,不斷地檢查這個(gè)標(biāo)志位,如果標(biāo)志位為true,則主動(dòng)退出線程執(zhí)行的循環(huán)或方法,從而終止線程的執(zhí)行。

public class MyThread implements Runnable {
    private volatile boolean flag = true;

    public void run() {
        while (flag) {
            // 執(zhí)行線程任務(wù)
        }
    }

    public void stopThread() {
        flag = false;
    }
}

二、使用interrupt()方法

每個(gè)線程對(duì)象都有一個(gè)interrupt()方法。通過調(diào)用該方法,可以將線程的中斷狀態(tài)設(shè)置為"中斷"。在線程的執(zhí)行代碼中,在適當(dāng)?shù)奈恢檬褂肨hread.currentThread().isInterrupted()方法來檢查線程的中斷狀態(tài),并在必要時(shí)終止線程的執(zhí)行

public class MyThread extends Thread {
    public void run() {
        while (!Thread.currentThread().isInterrupted()) {
            // 執(zhí)行線程任務(wù)
        }
    }
    
    public void stopThread() {
        interrupt();
    }
}

三、使用stop()方法(已過時(shí))

Thread類提供了stop()方法,可以立即終止線程的執(zhí)行。但是該方法已過時(shí),不推薦使用。因?yàn)閟top()方法可能導(dǎo)致線程不會(huì)釋放占用的鎖資源,從而引發(fā)線程安全問題。

public class MyThread extends Thread {
    public void run() {
        while (true) {
            // 執(zhí)行線程任務(wù)
        }
    }
    
    public void stopThread() {
        stop();
    }
}

四、使用Thread.interrupt()方法配合isInterrupted()方法

線程的interrupt()方法會(huì)將線程的中斷狀態(tài)設(shè)置為"中斷"。在線程的執(zhí)行代碼中,可以使用Thread.currentThread().isInterrupted()方法檢查線程的中斷狀態(tài),并在必要時(shí)終止線程執(zhí)行。與方式2相比,這種方式更加靈活,可以處理更復(fù)雜的線程終止邏輯。

public class MyThread extends Thread {
    public void run() {
        while (!Thread.currentThread().isInterrupted()) {
            try {
                // 執(zhí)行線程任務(wù)
                // 可能會(huì)有一些阻塞操作,如Thread.sleep()等
            } catch (InterruptedException e) {
                // 捕獲InterruptedException異常,清除中斷狀態(tài)
                Thread.currentThread().interrupt();
            }
        }
    }
    
    public void stopThread() {
        interrupt();
    }
}

到此這篇關(guān)于java 終止線程的4種方式小結(jié)的文章就介紹到這了,更多相關(guān)java 終止線程內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • spring 注解驗(yàn)證@NotNull等使用方法

    spring 注解驗(yàn)證@NotNull等使用方法

    這篇文章主要介紹了spring 注解驗(yàn)證@NotNull等使用方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • java編程的30個(gè)建議

    java編程的30個(gè)建議

    這篇文章主要介紹了java編程的30個(gè)建議,需要的朋友可以參考下
    2014-05-05
  • Java基礎(chǔ)知識(shí)精通注釋與數(shù)據(jù)類型及常量與變量

    Java基礎(chǔ)知識(shí)精通注釋與數(shù)據(jù)類型及常量與變量

    本文給大家介紹了Java的注釋與數(shù)據(jù)類型和常量變量,這些都是最基礎(chǔ)的知識(shí),文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • mybatis-plus自定義業(yè)務(wù)實(shí)現(xiàn)方式

    mybatis-plus自定義業(yè)務(wù)實(shí)現(xiàn)方式

    本文介紹了使用MyBatis-Plus(簡(jiǎn)稱MP)進(jìn)行數(shù)據(jù)庫操作的實(shí)現(xiàn)步驟,包括創(chuàng)建實(shí)體類、Mapper接口和XML文件、Service接口和實(shí)現(xiàn)類,以及測(cè)試類,重點(diǎn)強(qiáng)調(diào)了業(yè)務(wù)層參數(shù)校驗(yàn)、事務(wù)管理以及復(fù)雜SQL的處理方式
    2026-03-03
  • 基于Java+Selenium實(shí)現(xiàn)保存網(wǎng)站登錄數(shù)據(jù)的詳細(xì)指南

    基于Java+Selenium實(shí)現(xiàn)保存網(wǎng)站登錄數(shù)據(jù)的詳細(xì)指南

    在使用 Selenium 進(jìn)行自動(dòng)化測(cè)試時(shí),頻繁地手動(dòng)登錄網(wǎng)站可能會(huì)非常耗時(shí),為了提高效率,我們可以采取一些措施來保存網(wǎng)站的登錄數(shù)據(jù),本文將詳細(xì)介紹兩種常見的方法,需要的朋友可以參考下
    2025-08-08
  • Spring?Boot中@Import三種使用方式實(shí)例詳解

    Spring?Boot中@Import三種使用方式實(shí)例詳解

    這篇文章主要介紹了Spring?Boot中@Import三種使用方式,主要有引入普通類,引入importSelector的實(shí)現(xiàn)類及引入importBeanDefinitionRegister的實(shí)現(xiàn)類,結(jié)合實(shí)例代碼給大家講解的非常詳細(xì),需要的朋友可以參考下
    2022-11-11
  • springboot項(xiàng)目中jackson-序列化-處理 NULL教程

    springboot項(xiàng)目中jackson-序列化-處理 NULL教程

    這篇文章主要介紹了springboot項(xiàng)目中jackson-序列化-處理 NULL教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • 更改idea的JDK版本超簡(jiǎn)單便捷方法

    更改idea的JDK版本超簡(jiǎn)單便捷方法

    idea很多地方都設(shè)置了jdk版本,不同模塊的jdk版本也可能不一樣,下面這篇文章主要給大家介紹了關(guān)于更改idea的JDK版本的超簡(jiǎn)單便捷方法,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • SpringBoot+MinIO實(shí)現(xiàn)對(duì)象存儲(chǔ)的示例詳解

    SpringBoot+MinIO實(shí)現(xiàn)對(duì)象存儲(chǔ)的示例詳解

    MinIO?是一個(gè)基于Apache?License?v2.0開源協(xié)議的對(duì)象存儲(chǔ)服務(wù),它是一個(gè)非常輕量的服務(wù),可以很簡(jiǎn)單的和其他應(yīng)用的結(jié)合,所以下面我們就來看看SpringBoot如何整合MinIO實(shí)現(xiàn)對(duì)象存儲(chǔ)吧
    2023-10-10
  • logback的isDebugEnabled日志配置級(jí)別源碼解析

    logback的isDebugEnabled日志配置級(jí)別源碼解析

    這篇文章主要為大家介紹了logback的isDebugEnabled日志配置級(jí)別源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11

最新評(píng)論

方正县| 海宁市| 民权县| 漳平市| 耿马| 双牌县| 建德市| 榆树市| 寿光市| 太谷县| 深圳市| 房产| 抚顺市| 济南市| 抚松县| 古蔺县| 如东县| 长兴县| 泾川县| 马公市| 奎屯市| 宁河县| 太仓市| 六盘水市| 萨迦县| 万全县| 阿鲁科尔沁旗| 阿拉善左旗| 陇南市| 镇康县| 崇州市| 彭泽县| 新巴尔虎左旗| 武威市| 高要市| 都昌县| 临洮县| 方山县| 灯塔市| 白银市| 当阳市|