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

Java并發(fā)編程之線程中斷

 更新時(shí)間:2021年09月29日 09:02:22   作者:黑夜中的小迷途  
這篇文章主要介紹了Java并發(fā)編程線程中斷,java線程中斷是一種線程間的協(xié)作模式,通過設(shè)置線程的中斷標(biāo)志并不能直接終止該線程的運(yùn)行,而是被中斷的線程根據(jù)中斷狀態(tài)自行處理,需要的朋友可以參考一下

線程中斷:

void interrupted()方法:中斷線程,例如,當(dāng)線程A運(yùn)行時(shí),線程B可以調(diào)用線程A的interrupted()方法來設(shè)置線程的中斷標(biāo)志為true并立即返回。設(shè)置標(biāo)志僅僅是為了設(shè)置標(biāo)志,線程A實(shí)際并沒有被中斷,它會繼續(xù)往下執(zhí)行,如果線程A因?yàn)檎{(diào)用了wait()方法,join()方法或者sleep()方法而引起的阻塞掛起,這時(shí)候若線程B調(diào)用線程A的interrupted()方法,線程A回調(diào)用這些方法的地方會拋出InterruptedException異常而返回。
boolean isInterrupted()方法:檢測當(dāng)前線程是否被中斷,如果是返回true,否則返回false。
boolean intertupted()方法:檢測當(dāng)縣線程是否被中斷,如果是返回true,否則返回false。與isInterrupted()不同的是,該方法如果發(fā)現(xiàn)線程被中斷,則會清除中斷標(biāo)志。

package com.heiye.learn1;

import java.util.logging.Logger;

public class InterruptedTest {
    public static void main(String[] args) throws InterruptedException {
        Logger logger=Logger.getLogger(InterruptedTest.class.toString());
        Thread thread=new Thread(new Runnable() {
            @Override
            public void run() {
                //如果當(dāng)前線程被中斷則退出循環(huán)
                while (!Thread.currentThread().isInterrupted()){
                    logger.warning(Thread.currentThread()+"Hello");
                }
            }
        });

        //啟動子線程
        thread.start();
        //主線程休眠1s,以便中斷當(dāng)前讓子線程輸出
        Thread.sleep(1000);
        //中斷子線程
        logger.warning("main thread interrupted thread");
        thread.interrupt();
        //等待子線程執(zhí)行完畢
        thread.join();
        logger.info("main is over");
    }
}

在如上代碼中,子線程thread通過檢查當(dāng)前線程中斷標(biāo)志來控制是否退出循環(huán),主線程在休眠1s后調(diào)用了threadinterupted()方法設(shè)置了中斷標(biāo)志,所以線程thread退出了循環(huán)。

下面看一種情況,當(dāng)線程為了等待一些特定條件的到來時(shí)候,一般會使用sleep()方法,wait(),join()方法來阻塞掛起當(dāng)前線程。下面看一個(gè)例子:

package com.heiye.learn1;

import java.util.logging.Logger;

public class InterruptedTest2 {
    public static void main(String[] args) throws InterruptedException {
        Logger logger = Logger.getLogger(InterruptedTest.class.toString());
        Thread threadOne = new Thread(new Runnable() {
            @Override
            public void run() {
                logger.info("threadOne begin sleep 2000 seconds");
                try {
                    Thread.sleep(2000000);
                    logger.info("threadOne awaking");
                } catch (InterruptedException e) {
                    logger.warning("threadOne is interrupted while sleeping");
                    return;
                    //e.printStackTrace();
                }
                logger.warning("threadOne-leaving normally")    ;
            }
        });

        threadOne.start();
        //確保子線程進(jìn)入睡眠狀態(tài)
        Thread.sleep(1000);
        //打斷子線程睡眠,讓子線程從sleep返回
        threadOne.interrupt();
        //等待子線程執(zhí)行完畢
        threadOne.join();
        logger.info("main thread is over");
    }
}

到此這篇關(guān)于Java并發(fā)編程之線程中斷的文章就介紹到這了,更多相關(guān)Java線程中斷內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • IDEA SSM框架整合配置及步驟詳解

    IDEA SSM框架整合配置及步驟詳解

    這篇文章主要介紹了IDEA SSM框架整合配置以及步驟,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • Java異常(Exception)處理以及常見異常總結(jié)

    Java異常(Exception)處理以及常見異常總結(jié)

    在《Java編程思想》中這樣定義異常,阻止當(dāng)前方法或作用域繼續(xù)執(zhí)行的問題,雖然java中有異常處理機(jī)制,但是要明確一點(diǎn),決不應(yīng)該用"正常"的態(tài)度來看待異常,這篇文章主要給大家介紹了關(guān)于Java異常(Exception)處理以及常見異常的相關(guān)資料,需要的朋友可以參考下
    2021-10-10
  • Java數(shù)據(jù)類型之引用數(shù)據(jù)類型解讀

    Java數(shù)據(jù)類型之引用數(shù)據(jù)類型解讀

    這篇文章主要介紹了Java數(shù)據(jù)類型之引用數(shù)據(jù)類型,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • 9個(gè)java數(shù)組常用操作實(shí)例

    9個(gè)java數(shù)組常用操作實(shí)例

    在本篇文章里小編給各位整理了關(guān)于java數(shù)組常用操作的實(shí)例以及相關(guān)的代碼,需要的朋友們跟著學(xué)習(xí)下。
    2019-07-07
  • java線性表排序示例分享

    java線性表排序示例分享

    這篇文章主要介紹了java線性表排序示例,需要的朋友可以參考下
    2014-03-03
  • SpringBoot事務(wù)鉤子函數(shù)的使用方式

    SpringBoot事務(wù)鉤子函數(shù)的使用方式

    本文介紹了SpringBoot中事務(wù)鉤子函數(shù)的使用方式,包括常見場景、使用方式等,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-11-11
  • Java遞歸尋路實(shí)現(xiàn),你真的理解了嗎

    Java遞歸尋路實(shí)現(xiàn),你真的理解了嗎

    遞歸就是一個(gè)過程或函數(shù)在其定義或說明中有直接或間接調(diào)用自身的一種方法,它通常把一個(gè)大型復(fù)雜的問題層層轉(zhuǎn)化為一個(gè)與原問題相似的規(guī)模較小的問題來求解,需要的朋友可以參考下
    2021-08-08
  • GraalVM系列Native?Image?Basics靜態(tài)分析

    GraalVM系列Native?Image?Basics靜態(tài)分析

    這篇文章主要為大家介紹了GraalVM系列Native?Image?Basics靜態(tài)分析詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • 詳解Java中native關(guān)鍵字

    詳解Java中native關(guān)鍵字

    這篇文章主要為大家詳細(xì)介紹了Java中native關(guān)鍵字,什么是Native Method
    2016-02-02
  • 詳解如何將JAVA程序制作成可以直接執(zhí)行的exe文件

    詳解如何將JAVA程序制作成可以直接執(zhí)行的exe文件

    這篇文章主要介紹了詳解如何將JAVA程序制作成可以直接執(zhí)行的exe文件,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09

最新評論

城步| 临泽县| 江陵县| 福贡县| 河西区| 鄂托克前旗| 普兰店市| 稷山县| 牟定县| 台湾省| 奇台县| 株洲县| 大余县| 勐海县| 和硕县| 扬中市| 五家渠市| 大同市| 彭水| 新蔡县| 刚察县| 星子县| 永福县| 民丰县| 杭锦旗| 凤凰县| 秭归县| 烟台市| 辽宁省| 买车| 海林市| 日照市| 紫阳县| 徐汇区| 崇礼县| 克拉玛依市| 乌鲁木齐市| 上蔡县| 克什克腾旗| 松桃| 蒙自县|