您好,登錄后才能下訂單哦!
這篇文章主要介紹java中wait調(diào)用中斷的解決方法,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
1. 簡單,只需理解基本的概念,就可以編寫適合于各種情況的應(yīng)用程序;2. 面向?qū)ο螅?. 分布性,Java是面向網(wǎng)絡(luò)的語言;4. 魯棒性,java提供自動垃圾收集來進行內(nèi)存管理,防止程序員在管理內(nèi)存時容易產(chǎn)生的錯誤。;5. 安全性,用于網(wǎng)絡(luò)、分布環(huán)境下的Java必須防止病毒的入侵。6. 體系結(jié)構(gòu)中立,只要安裝了Java運行時系統(tǒng),就可在任意處理器上運行。7. 可移植性,Java可以方便地移植到網(wǎng)絡(luò)上的不同機器。8.解釋執(zhí)行,Java解釋器直接對Java字節(jié)碼進行解釋執(zhí)行。
java中的線程在數(shù)量上,可以說是比較多的。所以為了能夠使線程有序的進行,我們通常會用到wait方法,來讓部分線程變?yōu)榈却臓顟B(tài)。不過wait方法一旦被中斷也是非常麻煩的,將會出現(xiàn)不斷調(diào)用的情況。下面我們就這種問題進行分析,然后帶來具體的實例解決辦法。
1、解決辦法
(1)使用java線程時,將經(jīng)常使用wait方法,并且如果在調(diào)用wait方法時中斷了,jvm將捕獲該中斷,并持續(xù)調(diào)用wait指令。
(2)此時即使使用interrupt發(fā)送法中斷,也不會發(fā)生任何效果。
(3)wait方法需要進行一些封裝,捕獲異常,然后停止執(zhí)行該異常。
2、實例
public static void wait(Object obj) { boolean interrupted = true; while (interrupted) { interrupted = false; try { obj.wait(); } catch (InterruptedException e) { interrupted = true; } } } public static void wait(Object obj, int timeout) { boolean interrupted = true; long startTime = System.currentTimeMillis(); int sleepTimeout = timeout; while (interrupted) { interrupted = false; try { obj.wait(sleepTimeout); } catch (InterruptedException e) { interrupted = true; long now = System.currentTimeMillis(); sleepTimeout -= now - startTime; startTime = now; if (sleepTimeout < 0) { interrupted = false; } } } }
以上是“java中wait調(diào)用中斷的解決方法”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。