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

java InterruptedException 異常中斷的實(shí)現(xiàn)

 更新時(shí)間:2023年08月04日 09:04:39   作者:FLGB  
本文主要介紹了java InterruptedException 異常中斷的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

InterruptedException

當(dāng)一個(gè)線程在被阻塞狀態(tài)(如調(diào)用 Thread.sleep() 或 Object.wait() 方法)時(shí),如果其他線程調(diào)用該被阻塞線程的 interrupt() 方法,那么被阻塞線程會(huì)被中斷,并拋出 InterruptedException 異常。

package com.lf.java.basic.concurrent;
class MyRunnable implements Runnable {
? ? @Override
? ? public void run() {
? ? ? ? try {
? ? ? ? ? ? // 被阻塞的線程,調(diào)用sleep方法
? ? ? ? ? ? Thread.sleep(5000);
? ? ? ? } catch (InterruptedException e) {
? ? ? ? ? ? // 被中斷時(shí)會(huì)拋出InterruptedException異常
? ? ? ? ? ? System.out.println("Thread was interrupted.");
? ? ? ? ? ? // 可以選擇終止線程的執(zhí)行
? ? ? ? ? ? // return;
? ? ? ? }
? ? ? ? System.out.println("被喚醒了處理Exception后可以自由選擇做什么事");
? ? ? ? System.out.println("Thread completed.");
? ? }
}
public class InterruptedExceptionSample {
? ? public static void main(String[] args) {
? ? ? ? Thread thread = new Thread(new MyRunnable());
? ? ? ? thread.start();
? ? ? ? // 主線程休眠一段時(shí)間后,中斷被阻塞的線程
? ? ? ? try {
? ? ? ? ? ? Thread.sleep(2000);
? ? ? ? ? ? thread.interrupt();
? ? ? ? } catch (InterruptedException e) {
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? }
}

輸出:

Thread was interrupted.
被喚醒了處理Exception后可以自由選擇做什么事
Thread completed.

1、被阻塞的線程處于阻塞狀態(tài),比如調(diào)用了 Thread.sleep() 或 Object.wait() 方法。

2、其他線程調(diào)用了被阻塞線程的 interrupt() 方法。

3、被阻塞線程會(huì)被喚醒,它會(huì)檢查自己是否被中斷,如果被中斷,就會(huì)拋出 InterruptedException 異常。

4、此時(shí),被阻塞線程可以選擇如何處理這個(gè)異常,比如捕獲異常并做相應(yīng)的處理,或者繼續(xù)向上層拋出異常。

注意:
中斷是一種協(xié)作機(jī)制,它并不能直接終止一個(gè)線程的執(zhí)行。被中斷的線程需要在適當(dāng)?shù)臅r(shí)候檢查自己是否被中斷,并做出相應(yīng)的響應(yīng)。在處理 InterruptedException 時(shí),可以選擇終止線程的執(zhí)行或采取其他合適的措施來處理中斷。(存在不能被中斷的阻塞 I/O 調(diào)用, 應(yīng)該考慮選擇可中斷的調(diào) =用)。

interrupted() 方法(靜態(tài)方法)

public static boolean interrupted()

interrupted() 方法是一個(gè)靜態(tài)方法,用于檢測(cè)當(dāng)前線程是否被中斷,并且會(huì)清除中斷狀態(tài)。當(dāng)一個(gè)線程被中斷時(shí),該線程的中斷狀態(tài)會(huì)被設(shè)置為 true。當(dāng)你調(diào)用 interrupted() 方法時(shí),它會(huì)返回當(dāng)前線程的中斷狀態(tài),并且同時(shí)將中斷狀態(tài)重置為 false。這意味著,如果連續(xù)多次調(diào)用 interrupted() 方法,只有第一次會(huì)返回 true,之后的調(diào)用將返回 false,除非線程又被重新中斷。

public class InterruptedSample {
? ? public static void main(String[] args) {
? ? ? ? Thread thread = new Thread(() -> {
? ? ? ? ? ? for (int i = 0; i < 5; i++) {
? ? ? ? ? ? ? ? if (Thread.interrupted()) {
? ? ? ? ? ? ? ? ? ? System.out.println("Thread is interrupted.");
? ? ? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? ? ? System.out.println("Thread is not interrupted.");
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? });
? ? ? ? thread.start();
? ? ? ? // 主線程休眠一段時(shí)間后,中斷被阻塞的線程
? ? ? ? try {
? ? ? ? ? ? Thread.sleep(2000);
? ? ? ? ? ? thread.interrupt();
? ? ? ? } catch (InterruptedException e) {
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? }
}

isInterrupted() 方法(實(shí)例方法)

public boolean isInterrupted()

isInterrupted() 方法是一個(gè)實(shí)例方法,用于檢查當(dāng)前線程的中斷狀態(tài),但不會(huì)清除中斷狀態(tài)。當(dāng)你調(diào)用 isInterrupted() 方法時(shí),它會(huì)返回當(dāng)前線程的中斷狀態(tài),并且不會(huì)改變中斷狀態(tài)。因此,多次調(diào)用 isInterrupted() 方法會(huì)一直返回相同的中斷狀態(tài),不會(huì)重置為 false。

public class IsInterruptedSample {
? ? public static void main(String[] args) {
? ? ? ? Thread thread = new Thread(() -> {
? ? ? ? ? ? for (int i = 0; i < 5; i++) {
? ? ? ? ? ? ? ? if (Thread.currentThread().isInterrupted()) {
? ? ? ? ? ? ? ? ? ? System.out.println("Thread is interrupted.");
? ? ? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? ? ? System.out.println("Thread is not interrupted.");
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? });
? ? ? ? thread.start();
? ? ? ? // 主線程休眠一段時(shí)間后,中斷被阻塞的線程
? ? ? ? try {
? ? ? ? ? ? Thread.sleep(2000);
? ? ? ? ? ? thread.interrupt();
? ? ? ? } catch (InterruptedException e) {
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? }
}

到此這篇關(guān)于java InterruptedException 異常中斷的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)java InterruptedException 異常中斷內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java中的字節(jié),字符輸出流與字節(jié)和字符輸入流的簡(jiǎn)單理解

    Java中的字節(jié),字符輸出流與字節(jié)和字符輸入流的簡(jiǎn)單理解

    這篇文章主要介紹了java 字節(jié)流和字符流的區(qū)別詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2021-07-07
  • 淺談Java文件執(zhí)行順序、main程序入口的理解

    淺談Java文件執(zhí)行順序、main程序入口的理解

    這篇文章主要介紹了Java文件執(zhí)行順序、main程序入口的理解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Mybatis-plus查詢語句加括號(hào)(.or(),.and())問題

    Mybatis-plus查詢語句加括號(hào)(.or(),.and())問題

    這篇文章主要介紹了Mybatis-plus查詢語句加括號(hào)(.or(),.and())問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • JavaWeb文件上傳入門教程

    JavaWeb文件上傳入門教程

    這篇文章主要為大家詳細(xì)介紹了JavaWeb文件上傳入門教程,分析了文件上傳原理、介紹了第三方上傳組件,感興趣的小伙伴們可以參考一下
    2016-06-06
  • Lambda表達(dá)式和Java集合框架

    Lambda表達(dá)式和Java集合框架

    本文主要介紹了Lambda表達(dá)式和Java集合框架的相關(guān)知識(shí),具有很好的參考價(jià)值。下面跟著小編一起來看下吧
    2017-03-03
  • mybatis中使用not?in與?in的寫法說明

    mybatis中使用not?in與?in的寫法說明

    這篇文章主要介紹了mybatis中使用not?in與?in的寫法說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • 從Spring遷移到Spring Boot的方法步驟

    從Spring遷移到Spring Boot的方法步驟

    這篇文章主要介紹了從Spring遷移到Spring Boot的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • 針對(duì)Dubbo接口Mock的解決方案詳解

    針對(duì)Dubbo接口Mock的解決方案詳解

    這篇文章主要為大家介紹了針對(duì)Dubbo接口Mock的解決方案詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • java后端+前端使用WebSocket實(shí)現(xiàn)消息推送的詳細(xì)流程

    java后端+前端使用WebSocket實(shí)現(xiàn)消息推送的詳細(xì)流程

    后端向前端推送消息就需要長(zhǎng)連接,首先想到的就是websocket,下面這篇文章主要給大家介紹了關(guān)于java后端+前端使用WebSocket實(shí)現(xiàn)消息推送的詳細(xì)流程,需要的朋友可以參考下
    2022-10-10
  • Java字符串?dāng)?shù)字左右補(bǔ)全0的四種方式

    Java字符串?dāng)?shù)字左右補(bǔ)全0的四種方式

    這篇文章主要給大家介紹了關(guān)于Java字符串?dāng)?shù)字左右補(bǔ)全0的四種方式,在編程中有時(shí)候我們需要對(duì)一個(gè)字符串進(jìn)行字符填充,以滿足某些特定的要求,其中補(bǔ)全0是一種常見的需求,需要的朋友可以參考下
    2023-08-08

最新評(píng)論

获嘉县| 乐都县| 丰台区| 徐汇区| 眉山市| 武隆县| 牙克石市| 九江市| 沅陵县| 灵宝市| 寿宁县| 穆棱市| 施秉县| 延吉市| 喀喇沁旗| 涟水县| 西宁市| 黄浦区| 重庆市| 疏附县| 乌拉特前旗| 永昌县| 麻城市| 巫溪县| 贵南县| 安塞县| 瑞昌市| 阿拉善右旗| 汾阳市| 甘泉县| 怀集县| 定远县| 肥西县| 信阳市| 诸城市| 黑龙江省| 民县| 长垣县| 贺兰县| 莱州市| 临夏县|