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

Java多線程之中斷線程(Interrupt)的使用詳解

 更新時(shí)間:2013年05月04日 14:43:19   作者:  
interrupt字面上是中斷的意思,但在Java里Thread.interrupt()方法實(shí)際上通過(guò)某種方式通知線程,并不會(huì)直接中止該線程

interrupt方法

interrupt字面上是中斷的意思,但在Java里Thread.interrupt()方法實(shí)際上通過(guò)某種方式通知線程,并不會(huì)直接中止該線程。具體做什么事情由寫代碼的人決定,通常我們會(huì)中止該線程。

    如果線程在調(diào)用Object類的wait()、wait(long)或wait(long, int)方法,或者該類的 join() 、join(long) 、join(long, int) 、sleep(long) 或 sleep(long, int) 方法過(guò)程中受阻,則其中斷狀態(tài)將被清除,它還將收到一個(gè) InterruptedException。

    如果該線程在可中斷的通道(java.nio.channels.InterruptibleChannel)上的 I/O 操作中受阻,則該通道將被關(guān)閉,該線程的中斷狀態(tài)將被設(shè)置并且該線程將收到一個(gè) ClosedByInterruptException。

    如果該線程在一個(gè) Selector (java.nio.channels.Selector) 中受阻,則該線程的中斷狀態(tài)將被設(shè)置,它將立即從選擇操作返回,并可能帶有一個(gè)非零值,就好像調(diào)用了選擇器的 wakeup 方法一樣。

    如果以前的條件都沒有保存,則該線程的中斷狀態(tài)將被設(shè)置。

    中斷一個(gè)不處于活動(dòng)狀態(tài)的線程不需要任何作用。

檢測(cè)中斷

如何檢測(cè)中斷決定于線程所做的事情。

    如果線程調(diào)用可以拋出InterruptException的方法,則捕獲InterruptException,然后在catch塊中處理(通常是退出run方法以中斷線程)

    如果調(diào)用其它方法,則可以在空閑時(shí)檢查Thread.interrupted以判斷是否收到中斷信號(hào),確認(rèn)收到中斷信號(hào)后進(jìn)行處理??梢話伋鲆粋€(gè)InterruptException從而和前一種處理方法保持一致

中斷狀態(tài)

線程的中斷機(jī)制是使用中斷狀態(tài)這一內(nèi)部標(biāo)志實(shí)現(xiàn)的。中斷狀態(tài)在調(diào)用線程的interrupt()方法時(shí)被設(shè)置(參考上面的interrupt方法說(shuō)明)。

 

有兩種方法可以取得線程的中斷狀態(tài):

    調(diào)用靜態(tài)方法Thread.interrupted(),該方法除了返回當(dāng)前線程的中斷狀態(tài)外,還會(huì)清除當(dāng)前線程的中斷狀態(tài)。換句話說(shuō),如果連續(xù)兩次調(diào)用該方法,則第二次調(diào)用將返回 false(在第一次調(diào)用已清除了其中斷狀態(tài)之后,且第二次調(diào)用檢驗(yàn)完中斷狀態(tài)前,當(dāng)前線程再次中斷的情況除外)。

    調(diào)用指定線程的isInterrupted()方法,該方法只返回指定線程的中斷狀態(tài)而不影響該線程的中斷狀態(tài)。

有兩種方法可以清除線程的中斷狀態(tài):

    如上所述,調(diào)用Thread.interrupted()

    調(diào)用該線程的interrupt()方法引發(fā)InterruptedException的時(shí)候同時(shí)就已經(jīng)清除了所在線程的中斷狀態(tài),包括Object類的wait()、wait(long)或wait(long, int)方法,或者線程的 join() 、join(long) 、join(long, int) 、sleep(long) 或 sleep(long, int) 方法

相關(guān)文章

  • Java中的Graphics2D類基本使用教程

    Java中的Graphics2D類基本使用教程

    這篇文章主要介紹了Java中的Graphics2D類基本使用教程,Graphics2D類較之Graphics類中的功能更加專業(yè),需要的朋友可以參考下
    2015-10-10
  • Java 數(shù)組差集實(shí)例代碼

    Java 數(shù)組差集實(shí)例代碼

    這篇文章主要介紹了Java 數(shù)組差集實(shí)例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • java dump文件怎么生成和分析-JMAP用法詳解

    java dump文件怎么生成和分析-JMAP用法詳解

    這篇文章主要介紹了java dump文件怎么生成和分析-JMAP用法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • Java手寫簡(jiǎn)易版HashMap的使用(存儲(chǔ)+查找)

    Java手寫簡(jiǎn)易版HashMap的使用(存儲(chǔ)+查找)

    這篇文章主要介紹了Java手寫簡(jiǎn)易版HashMap的使用(存儲(chǔ)+查找),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • Spring中使用騰訊云發(fā)送短信驗(yàn)證碼的實(shí)現(xiàn)示例

    Spring中使用騰訊云發(fā)送短信驗(yàn)證碼的實(shí)現(xiàn)示例

    本文主要介紹了Spring?中?使用騰訊云發(fā)送短信驗(yàn)證碼,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Java鏈表中元素刪除的實(shí)現(xiàn)方法詳解【只刪除一個(gè)元素情況】

    Java鏈表中元素刪除的實(shí)現(xiàn)方法詳解【只刪除一個(gè)元素情況】

    這篇文章主要介紹了Java鏈表中元素刪除的實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了java只刪除鏈表中一個(gè)元素的相關(guān)操作原理、實(shí)現(xiàn)方法與注意事項(xiàng),需要的朋友可以參考下
    2020-03-03
  • Spring MVC攔截器(Interceptor)的定義和配置過(guò)程

    Spring MVC攔截器(Interceptor)的定義和配置過(guò)程

    這篇文章主要介紹了Spring MVC攔截器(Interceptor)的定義和配置過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • Java并發(fā)編程之ConcurrentLinkedQueue源碼詳解

    Java并發(fā)編程之ConcurrentLinkedQueue源碼詳解

    今天帶小伙伴們學(xué)習(xí)一下Java并發(fā)編程之Java ConcurrentLinkedQueue源碼,本篇文章詳細(xì)分析了ConcurrentLinkedQueue源碼,有代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們很有幫助喲,需要的朋友可以參考下
    2021-05-05
  • 淺談靜態(tài)變量、成員變量、局部變量三者的區(qū)別

    淺談靜態(tài)變量、成員變量、局部變量三者的區(qū)別

    下面小編就為大家?guī)?lái)一篇淺談靜態(tài)變量、成員變量、局部變量三者的區(qū)別。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-09-09
  • spring boot 實(shí)現(xiàn)Minio分片上傳的步驟

    spring boot 實(shí)現(xiàn)Minio分片上傳的步驟

    分片上傳,就是將所要上傳的文件,按照一定的大小,將整個(gè)文件分隔成多個(gè)數(shù)據(jù)塊來(lái)進(jìn)行分別上傳,上傳完之后再由服務(wù)端對(duì)所有上傳的文件進(jìn)行匯總整合成原始的文件,本文給大家介紹spring boot 實(shí)現(xiàn)Minio分片上傳的步驟,感興趣的朋友跟隨小編一起看看吧
    2023-10-10

最新評(píng)論

张掖市| 奈曼旗| 利辛县| 镇远县| 霍山县| 绥芬河市| 铁岭市| 扬中市| 溧阳市| 丰台区| 资阳市| 连城县| 莱西市| 临高县| 鸡东县| 绵竹市| 新平| 郑州市| 淳化县| 仪征市| 伊川县| 大竹县| 公安县| 营山县| 英超| 准格尔旗| 绥芬河市| 肃南| 合作市| 津南区| 麻城市| 五莲县| 买车| 临江市| 宁陵县| 定结县| 乾安县| 大冶市| 宜兰市| 栾川县| 游戏|