java并發(fā)編程(2):線程中斷(含代碼)-編程開發(fā)技術(shù)

java并發(fā)編程(2):線程中斷(含代碼)-編程開發(fā)技術(shù)

ID:30777332

大?。?9.50 KB

頁數(shù):8頁

時間:2019-01-03

java并發(fā)編程(2):線程中斷(含代碼)-編程開發(fā)技術(shù)_第1頁
java并發(fā)編程(2):線程中斷(含代碼)-編程開發(fā)技術(shù)_第2頁
java并發(fā)編程(2):線程中斷(含代碼)-編程開發(fā)技術(shù)_第3頁
java并發(fā)編程(2):線程中斷(含代碼)-編程開發(fā)技術(shù)_第4頁
java并發(fā)編程(2):線程中斷(含代碼)-編程開發(fā)技術(shù)_第5頁
資源描述:

《java并發(fā)編程(2):線程中斷(含代碼)-編程開發(fā)技術(shù)》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。

1、Java并發(fā)編程(2):線程中斷(含代碼)-編程開發(fā)技術(shù)Java并發(fā)編程(2):線程中斷(含代碼)原文出處:蘭亭風(fēng)雨使用interrupt()中斷線程當(dāng)一個線程運行時,另一個線程可以調(diào)用對應(yīng)的Thread對象的interrupt()方法來中斷它,該方法只是在目標(biāo)線程中設(shè)置一個標(biāo)志,表示它已經(jīng)被中斷,并立即返回。這里需要注意的是,如果只是單純的調(diào)用interrupt()方法,線程并沒有實際被中斷,會繼續(xù)往下執(zhí)行。卜?面一段代碼演示了休眠線程的中斷:publicclassSleepInterruptextendsObjectimplementsRunnable{pub

2、licvoidrun(){try{System.out.printin(^inrun()-abouttosleepfor20seconds");Thread,sleep(20000);System.out.println(〃inrun()-wokeup〃);}catch(InterruptedExceptione){System.out.printin("inrun()-interruptedwhilesleeping");//處理完中斷異常后,返回到run()方法人口,//如果沒有return,線程不會實際被中斷,它會繼續(xù)打印下面的信息return;}Syste

3、m?out.printin("inrun()一leavingnormally");}publicstaticvoidmain(String[]args){Sleepinterruptsi=newSleepinterrupt();Threadt=newThread(si);t.start();//主線程休眠2秒,從而確保剛才啟動的線程有機會執(zhí)行一段吋間try{Thread.sleep(2000);}catch(InterruptedExceptione){e.printStackTrace();System,out.printin(/zinmain()-interr

4、uptingotherthread");//中斷線程tt.interrupt();}}System,out.println(〃inmain()-leaving");運行結(jié)果如下:二C:TIID0TSsystea32cBd.ezeF:thread>jauacSleeplnterrupt.jauaF:tbread>jauaSleeplnterruptinrun<>一abouttosleepfor20secondsinnainO一interruptingotherthreadinnainO一leavinginrun<>一interruptedwhileslee

5、pingF:thread>搜狗拼音半:???主線程啟動新線程后,自身休眠2秒鐘,允許新線程獲得運行時間。新線程打印信息"abouttosleepfor20seconds"后,繼而休眠20秒鐘,大約2秒鐘后,main線程通知新線程中斷,那么新線程的20秒的休眠將被打斷,從而拋岀InteiruptException界常,執(zhí)行跳轉(zhuǎn)到catch塊,打印出“interruptedwhilesleeping”信息,并立即從run()方法返回,然后消亡,而不會打印出catch塊后面的“l(fā)eavingnormally^^信息。???請注意:由于不確定的線程規(guī)劃,上圖運行結(jié)果的后

6、兩行可能順序相反,這取決于主線程和新線程哪個先消亡。但前兩行信息的順序必定如上圖所示。??另外,如果將catch塊中的return語句注釋掉,貝U線程在拋出異常后,會繼續(xù)往下執(zhí)行,而不會被中斷,從而會打印出"leavingnormally“信息。待決中斷在上面的例了中,sleep()方法的實現(xiàn)檢杳到休眠線程被中斷,它會相當(dāng)友好地終止線程,并拋出InterruptedException異常。另外一種情況,如果線程在調(diào)用sleep()方法前被中斷,那么該中斷稱為待決中斷,它會在剛調(diào)用sleep()方法吋,立即拋LbInterruptedException異常。下面的代

7、碼演示了待決中斷:publicclassPcndinglntcrruptcxtcndsObject{publicstaticvoidmain(String[]args){線程)//如果輸入了參數(shù),則在mian線程中中斷當(dāng)前線程(亦即mainif(args,length>0){Thread,currcntThrcad().intcrrupt();}//獲取當(dāng)前時間longstartTime二System,currentTimeM訂lis();try{Thread,sleep(2000);System.out?printin(zzwasNOTinterrupted")

8、;}cat

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。