国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

interrupt、interrupted 、isInterrupted 詳解

2019-11-06 06:39:29
字體:
供稿:網(wǎng)友

interrupt()

interrupt方法用于中斷線程。調(diào)用該方法的線程的狀態(tài)為將被置為”中斷”狀態(tài)。 注意:線程中斷僅僅是置線程的中斷狀態(tài)位,不會停止線程。需要用戶自己去監(jiān)視線程的狀態(tài)為并做處理。支持線程中斷的方法(也就是線程中斷后會拋出interruptedException的方法)就是在監(jiān)視線程的中斷狀態(tài),一旦線程的中斷狀態(tài)被置為“中斷狀態(tài)”,就會拋出中斷異常。

isInterrupted()與interrupted()

方法實現(xiàn)

public boolean isInterrupted () { return isInterrupted(false);}public static boolean interrupted () { return currentThread().isInterrupted(true);}
這兩個方法的區(qū)別
interrupted()方法作用于當(dāng)前線程,isInterrupted()是作用于調(diào)用改方法的線程對象所對應(yīng)線程。eg:可以在線程A中去調(diào)用線程B的isInterrupted()這兩個方法都會調(diào)用同一個方法而參數(shù)不同一個是true一個是false

isInterrupted()

方法實現(xiàn)

PRivate native boolean isInterrupted( boolean ClearInterrupted);

如果參數(shù)為true,在返回線程狀態(tài)位后需要重置線程狀態(tài),即重置到原來的狀態(tài)

參數(shù)為false,直接返回線程的狀態(tài)位

也就是只有線程本身才能清除自己的狀態(tài)位,在線程調(diào)用對象中無法清除,A線程無法清除B線程的狀態(tài)

**interrupt()是用來設(shè)置中斷狀態(tài)的。返回true說明中斷狀態(tài)被設(shè)置了而不是被清除了。我們調(diào)用sleep、wait等此類可中斷(throw InterruptedException)方法時,一旦方法拋出InterruptedException,當(dāng)前調(diào)用該方法的線程的中斷狀態(tài)就會被jvm自動清除了,就是說我們調(diào)用該線程的isInterrupted 方法時是返回false。如果你想保持中斷狀態(tài),可以再次調(diào)用interrupt方法設(shè)置中斷狀態(tài)。這樣做的原因是,java的中斷并不是真正的中斷線程,而只設(shè)置標(biāo)志位(中斷位)來通知用戶。如果你捕獲到中斷異常,說明當(dāng)前線程已經(jīng)被中斷,不需要繼續(xù)保持中斷位。 interrupted是靜態(tài)方法,返回的是當(dāng)前線程的中斷狀態(tài)。例如,如果當(dāng)前線程被中斷(沒有拋出中斷異常,否則中斷狀態(tài)就會被清除),你調(diào)用interrupted方法,第一次會返回true。然后,當(dāng)前線程的中斷狀態(tài)被方法內(nèi)部清除了。第二次調(diào)用時就會返回false。如果你剛開始一直調(diào)用isInterrupted,則會一直返回true,除非中間線程的中斷狀態(tài)被其他操作清除了。**


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 安顺市| 临湘市| 富阳市| 甘洛县| 宜州市| 辛集市| 囊谦县| 桃江县| 高雄市| 泽州县| 原阳县| 宁陕县| 敦煌市| 新绛县| 昭通市| 德江县| 盘山县| 察哈| 利辛县| 奈曼旗| 湘乡市| 哈巴河县| 方正县| 亚东县| 天台县| 西畴县| 石门县| 耒阳市| 大邑县| 商洛市| 安化县| 郧西县| 平塘县| 凤庆县| 玉山县| 锡林郭勒盟| 金溪县| 越西县| 简阳市| 阿拉善左旗| 罗源县|