欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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)文章

  • springboot+swagger2.10.5+mybatis-plus 入門詳解

    springboot+swagger2.10.5+mybatis-plus 入門詳解

    這篇文章主要介紹了springboot+swagger2.10.5+mybatis-plus 入門,本文通過實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • Spring注解驅(qū)動(dòng)之ApplicationListener用法解讀

    Spring注解驅(qū)動(dòng)之ApplicationListener用法解讀

    這篇文章主要介紹了Spring注解驅(qū)動(dòng)之ApplicationListener用法解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • 簡(jiǎn)單談?wù)凧ava類與類之間的關(guān)系

    簡(jiǎn)單談?wù)凧ava類與類之間的關(guān)系

    類與類之間的關(guān)系對(duì)于理解面向?qū)ο缶哂泻苤匾淖饔?,以前在面試的時(shí)候也經(jīng)常被問到這個(gè)問題,在這里我就簡(jiǎn)單給大家介紹一下。
    2016-05-05
  • java使用POI批量導(dǎo)入excel數(shù)據(jù)的方法

    java使用POI批量導(dǎo)入excel數(shù)據(jù)的方法

    這篇文章主要為大家詳細(xì)介紹了java使用POI批量導(dǎo)入excel數(shù)據(jù)的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • SpringMVC實(shí)現(xiàn)文件上傳和下載的工具類

    SpringMVC實(shí)現(xiàn)文件上傳和下載的工具類

    這篇文章主要為大家詳細(xì)介紹了SpringMVC實(shí)現(xiàn)文件上傳和下載的工具類,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • Java?實(shí)現(xiàn)字符串SHA1加密方法

    Java?實(shí)現(xiàn)字符串SHA1加密方法

    這篇文章主要介紹了Java?實(shí)現(xiàn)字符串SHA1加密方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java中Mybatis,SpringMVC,Spring的介紹及聯(lián)系

    Java中Mybatis,SpringMVC,Spring的介紹及聯(lián)系

    這篇文章主要為大家詳細(xì)介紹了Java中Mybatis,SpringMVC,Spring的介紹及聯(lián)系,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • java開發(fā)flyway的方法

    java開發(fā)flyway的方法

    這篇文章主要介紹了java開發(fā)flyway的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • java教程之對(duì)象序列化使用基礎(chǔ)示例詳解

    java教程之對(duì)象序列化使用基礎(chǔ)示例詳解

    所謂對(duì)象序列化就是將對(duì)象的狀態(tài)轉(zhuǎn)換成字節(jié)流,以后可以通過這些值再生成相同狀態(tài)的對(duì)象,下面詳細(xì)介紹一下java對(duì)象的序列化使用方法
    2014-01-01
  • java工具類SendEmailUtil實(shí)現(xiàn)發(fā)送郵件

    java工具類SendEmailUtil實(shí)現(xiàn)發(fā)送郵件

    這篇文章主要為大家詳細(xì)介紹了java工具類SendEmailUtil實(shí)現(xiàn)發(fā)送郵件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-02-02

最新評(píng)論