老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業提供網站建設、域名注冊、服務器等服務

一文搞懂Java線程中斷

下面的這斷代碼大家應該再熟悉不過了,線程休眠需要捕獲或者拋出線程中斷異常,也就是你在睡覺的時候突然有個人沖進來把你吵醒了。

我們提供的服務有:成都網站設計、網站建設、外貿網站建設、微信公眾號開發、網站優化、網站認證、市南ssl等。為1000多家企事業單位解決了網站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的市南網站制作公司

try {
    Thread.sleep(3000);
} catch (InterruptedException e) {
    e.printStackTrace();
}

此時線程被打斷后,代碼會繼續運行或者拋出異常結束運行,這并不是我們需要的中斷線程的作用。

到底是什么是線程中斷?

線程中斷即線程運行過程中被其他線程給打斷了,它與 stop 最大的區別是:stop 是由系統強制終止線程,而線程中斷則是給目標線程發送一個中斷信號,如果目標線程沒有接收線程中斷的信號并結束線程,線程則不會終止,具體是否退出或者執行其他邏輯由目標線程決定。

我們來看下線程中斷最重要的 3 個方法,它們都是來自 Thread 類!

1、java.lang.Thread#interrupt

中斷目標線程,給目標線程發一個中斷信號,線程被打上中斷標記。

2、java.lang.Thread#isInterrupted()

判斷目標線程是否被中斷,不會清除中斷標記。

3、java.lang.Thread#interrupted

判斷目標線程是否被中斷,會清除中斷標記。

線程中斷實戰

我們來實例演示下線程中斷如何用!

示例1(中斷失敗)

private static void test1() {
    Thread thread = new Thread(() -> {
        while (true) {
            Thread.yield();
        }
    });
    thread.start();
    thread.interrupt();
}

請問示例1中的線程會被中斷嗎?答案:不會,因為雖然給線程發出了中斷信號,但程序中并沒有響應中斷信號的邏輯,所以程序不會有任何反應。

示例2:(中斷成功)

private static void test2() {
    Thread thread = new Thread(() -> {
        while (true) {
            Thread.yield();

            // 響應中斷
            if (Thread.currentThread().isInterrupted()) {
                System.out.println("線程被中斷,程序退出。");
                return;
            }
        }
    });
    thread.start();
    thread.interrupt();
}

我們給示例2加上了響應中斷的邏輯,程序接收到中斷信號打印出信息后返回退出。

示例3(中斷失敗)

private static void test3() throws InterruptedException {
    Thread thread = new Thread(() -> {
        while (true) {
            // 響應中斷
            if (Thread.currentThread().isInterrupted()) {
                System.out.println("線程被中斷,程序退出。");
                return;
            }

            try {
                Thread.sleep(3000);
            } catch (InterruptedException e) {
                System.out.println("線程休眠被中斷,程序退出。");
            }
        }
    });
    thread.start();
    Thread.sleep(2000);
    thread.interrupt();
}

示例3 sleep() 方法被中斷,并輸出了?線程休眠被中斷,程序退出。?程序繼續運行……為什么呢?

來看 sleep 的源碼:

一文搞懂 Java 線程中斷

可以看出 sleep() 方法被中斷后會清除中斷標記,所以循環會繼續運行。。

示例4(中斷成功)

private static void test4() throws InterruptedException {
    Thread thread = new Thread(() -> {
        while (true) {
            // 響應中斷
            if (Thread.currentThread().isInterrupted()) {
                System.out.println("線程被中斷,程序退出。");
                return;
            }

            try {
                Thread.sleep(3000);
            } catch (InterruptedException e) {
                System.out.println("線程休眠被中斷,程序退出。");
                Thread.currentThread().interrupt();
            }
        }
    });
    thread.start();
    Thread.sleep(2000);
    thread.interrupt();
}

示例4全部信息輸出并正常退出,只是在 sleep() 方法被中斷并清除標記后手動重新中斷當前線程,然后程序接收中斷信號返回退出


新聞標題:一文搞懂Java線程中斷
標題路徑:http://www.xueling.net.cn/article/jooejc.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 国产免费一区二区三区四区 | 日本岛国片在线观看一区二区 | 国产亚洲3P无码一区二区 | 亚洲天堂av线 | 18成禁人视频免费网站 | 亚洲人体av | 久久精品国产综合 | 全部免费a级毛片 | 麻豆精品91 | 国产日产欧产精品精品浪潮 | 日韩综合网站 | 黄色录像一级视频 | 亚洲专区久久 | 亚洲av国产国产久青草 | 国内盗摄视频一区二区三区 | yourporn精品视频入口 | 久久一区精品 | 国产精品――羞羞答答 | 亚洲肥熟 | 久久久久国产精品熟女影院浪 | 成人做爰高潮片免费视频 | 精品无人区麻豆乱码无限制 | 久久精品99久久香蕉国产色戒 | 韩国av在线播放 | 国产亚洲精品美女在线 | 九九爱精品| 制服诱惑一区 | 一区二区播放 | 麻豆传播媒体免费版官网 | 亚洲国产精品人人爽夜夜爽 | 影音先锋人妻啪啪AV资源网站 | 波多野结衣与黑人AV | 亚洲国产精品VA在线观看香蕉 | 六月婷婷久香在线视频 | 国产伦精品一区二区三区免费 | 人妻少妇伦在线无码 | 少妇啪啪av一区二区三区 | 日本高清视频一区二区 | 亚洲精品国产九九九 | 久久亚洲欧洲 | 黄色片免费大全 |