久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

java線程中的interrupt,isInterrupt,interrupted方法

 昵稱14689819 2015-05-07
  在java的線程Thread類中有三個(gè)方法,,比較容易混淆,在這里解釋一下
(1)interrupt:置線程的中斷狀態(tài)
(2)isInterrupt:線程是否中斷

(3)interrupted:返回線程的上次的中斷狀態(tài),,并清除中斷狀態(tài)

舉個(gè)例子:

  1. 用法:  
  2. class MyThread extends Thread {  
  3.     ......  
  4.     ......  
  5.     public void run() {  
  6.         try {  
  7.             while(!Thread.currentThread().isInterrupted()) {  
  8.                 //當(dāng)達(dá)到隊(duì)列容量時(shí),,在這里會(huì)阻塞  
  9.                 //put的內(nèi)部會(huì)調(diào)用LockSupport.park()這個(gè)是用來(lái)阻塞線程的方法  
  10.                 //當(dāng)其他線程,調(diào)用此線程的interrupt()方法時(shí),,會(huì)設(shè)置一個(gè)中斷標(biāo)志  
  11.                 //LockSupport.part()中檢測(cè)到這個(gè)中斷標(biāo)志,,會(huì)拋出InterruptedException,并清除線程的中斷標(biāo)志  
  12.                 //因此在異常段調(diào)用Thread.currentThread().isInterrupted()返回為false  
  13.                 ArrayBlockingQueue.put(somevalue);   
  14.             }  
  15.         } catch (InterruptedException e) {  
  16.             //由于阻塞庫(kù)函數(shù),,如:Object.wait,Thread.sleep除了拋出異常外,,還會(huì)清除線程中斷狀態(tài),因此可能在這里要保留線程的中斷狀態(tài)  
  17.             Thread.currentThread().interrupt();  
  18.         }  
  19.     }  
  20.     public void cancel() {  
  21.         interrupt();  
  22.     }  
  23. }  
  24. 外部調(diào)用  
  25. MyThread thread = new MyThread();  
  26. thread.start();  
  27. ......  
  28. thread.cancel();  
  29. thread.isInterrupted();  


一般來(lái)說(shuō),,阻塞函數(shù),,如:Thread.sleep、Thread.join,、Object.wait,、LockSupport.park等在檢查到線程的中斷狀態(tài)時(shí),會(huì)拋出InterruptedException,,同時(shí)會(huì)清除線程的中斷狀態(tài)

對(duì)于InterruptedException的處理,,可以有兩種情況:
(1)外層代碼可以處理這個(gè)異常,直接拋出這個(gè)異常即可
(2)如果不能拋出這個(gè)異常,,比如在run()方法內(nèi),,因?yàn)樵诘玫竭@個(gè)異常的同時(shí),線程的中斷狀態(tài)已經(jīng)被清除了,,需要保留線程的中斷狀態(tài),,則需要調(diào)用Thread.currentThread().interrupt()

另外,Thread.interrupted()在jdk庫(kù)的源代碼中比較常用,因?yàn)樗瓤梢缘玫缴弦淮尉€程的中斷標(biāo)志值,,又可以同時(shí)清除線程的中斷標(biāo)志,,一舉兩得,但同時(shí)也有壞處,,就是這個(gè)函數(shù)有清除中斷狀態(tài)的副作用,,不容易理解

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多