91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

詳解java中的中斷機制

發布時間:2021-01-05 14:56:45 來源:億速云 閱讀:145 作者:Leah 欄目:開發技術

詳解java中的中斷機制?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

java 中斷api

interrupt()

interrupt()方法本質上就是通過調用java.lang.Thread#interrupt0設置中斷flag為true,如下代碼演示了該方法的使用: 另啟一個線程中斷了當前線程。

@Test
public void interruptSt() {
 Thread mainThread = Thread.currentThread();
 new Thread(/*將當前線程中斷*/mainThread::interrupt).start();
 try {
 //public static native void sleep(long millis) throws InterruptedException;
 Thread.sleep(1_000);
 } catch (InterruptedException e) {
 System.out.println("main 線程被中斷了");
 }
 /*
 * 輸出: main 線程被中斷了
 */
}

interrupted()和isInterrupted()

public boolean isInterrupted() {
 // 設置this線程的中斷flag,不會重置中斷flag為true
 return isInterrupted(false);
}
public /*靜態方法*/static boolean interrupted() {
 // 設置當前線程的中斷flag,重置中斷flag為true
 return currentThread().isInterrupted(true);
}

使用示例

@Test
public void test_Flag() {
 Thread currentThread = Thread.currentThread();
 currentThread.interrupt();
 System.out.println("當前線程狀態 =" + currentThread.isInterrupted());
 System.out.println("當前線程狀態 =" + Thread.interrupted());
 System.out.println("當前線程狀態 =" + Thread.interrupted());
 /* 輸出
 當前線程狀態 =true
 當前線程狀態 =true
 當前線程狀態 =false*/
}

三、如何響應中斷?

調用一個可中斷的阻塞方法時需要處理受檢異常InterruptException,一般來說最容易的方式就是繼續拋出InterruptException ,讓調用方決定對中斷事件作出什么應對。但是對于一些不能在方法頭直接添加異常聲明的,可以catch出后再進行一些操作,例如使用Runnable時:

詳解java中的中斷機制

一般來說當catch到中斷時,應該對中斷狀態進行還原: 調用Thread.currentThread().interrupt();,除非明確自己的操作不會丟失線程中斷的證據,從而剝奪了上層棧的代碼處理中斷的機會。

總結

對目標線程調用interrupt()方法可以請求中斷一個線程,目標線程通過檢測isInterrupted()標志獲取自身是否已中斷。如果目標線程處于阻塞狀態,該線程會捕獲到InterruptedException。一般來說不要catchInterruptException后不做處理(“生吞中斷”)。

看完上述內容,你們掌握詳解java中的中斷機制的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新兴县| 甘南县| 郸城县| 朝阳区| 裕民县| 思茅市| 云安县| 怀来县| 大关县| 绥中县| 汕头市| 天津市| 章丘市| 隆昌县| 延安市| 丰台区| 溧阳市| 尤溪县| 平邑县| 当阳市| 舞钢市| 京山县| 逊克县| 鸡西市| 三江| 图木舒克市| 彰化县| 突泉县| 大名县| 平利县| 资阳市| 沛县| 霍城县| 博爱县| 托克托县| 大埔区| 婺源县| 临汾市| 北海市| 滦南县| 平湖市|