新聞中心
這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
線程中斷interrupt和LockSupport-創(chuàng)新互聯(lián)
本文章將要介紹的內容有以下幾點,讀者朋友也可先自行思考一下相關問題:
- 線程中斷 interrupt 方法怎么理解,意思就是線程中斷了嗎?那當前線程還能繼續(xù)執(zhí)行嗎?
- 判斷線程是否中斷的方法有幾個,它們之間有什么區(qū)別?
- LockSupport的 park/unpark 和 wait/notify 有什么區(qū)別?
- sleep 方法是怎么響應中斷的?
- park 方法又是怎么響應中斷的?
線程中斷相關方法
線程中和中斷相關的方法有三個,分別介紹如下:
1) interrupt
我們一般都說這個方法是用來中斷線程的,那么這個中斷應該怎么理解呢? 就是說把當前正在執(zhí)行的線程中斷掉,不讓它繼續(xù)往下執(zhí)行嗎?
其實,不然。 此處,說的中斷僅僅是給線程設置一個中斷的標識(設置為true),線程還是會繼續(xù)往下執(zhí)行的。而線程怎么停止,則需要由我們自己去處理。 一會兒會用代碼來說明這個。
2) isInterrupted
判斷當前線程的中斷狀態(tài),即判斷線程的中斷標識是true還是false。 注意,這個方法不會對線程原本的中斷狀態(tài)產(chǎn)生任何影響。
3) interrupted
也是判斷線程的中斷狀態(tài)的。但是,需要注意的是,這個方法和 isInterrupted 有很大的不同。我們看下它們的源碼:
public boolean isInterrupted() { return isInterrupted(false); }public static boolean interrupted() { return currentThread().isInterrupted(true); }//調用同一個方法,只是傳參不同private native boolean isInterrupted(boolean ClearInterrupted);
首先 isInterrupted 方法是線程對象的方法,而 interrupted 是Thread類的靜態(tài)方法。

名稱欄目:線程中斷interrupt和LockSupport-創(chuàng)新互聯(lián)
本文來源:http://fisionsoft.com.cn/article/ighpd.html