您好,登錄后才能下訂單哦!
這篇文章主要介紹java中wait調用中斷的解決方法,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
1. 簡單,只需理解基本的概念,就可以編寫適合于各種情況的應用程序;2. 面向對象;3. 分布性,Java是面向網絡的語言;4. 魯棒性,java提供自動垃圾收集來進行內存管理,防止程序員在管理內存時容易產生的錯誤。;5. 安全性,用于網絡、分布環境下的Java必須防止病毒的入侵。6. 體系結構中立,只要安裝了Java運行時系統,就可在任意處理器上運行。7. 可移植性,Java可以方便地移植到網絡上的不同機器。8.解釋執行,Java解釋器直接對Java字節碼進行解釋執行。
java中的線程在數量上,可以說是比較多的。所以為了能夠使線程有序的進行,我們通常會用到wait方法,來讓部分線程變為等待的狀態。不過wait方法一旦被中斷也是非常麻煩的,將會出現不斷調用的情況。下面我們就這種問題進行分析,然后帶來具體的實例解決辦法。
1、解決辦法
(1)使用java線程時,將經常使用wait方法,并且如果在調用wait方法時中斷了,jvm將捕獲該中斷,并持續調用wait指令。
(2)此時即使使用interrupt發送法中斷,也不會發生任何效果。
(3)wait方法需要進行一些封裝,捕獲異常,然后停止執行該異常。
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調用中斷的解決方法”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。