溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

java中wait調(diào)用中斷的解決方法

發(fā)布時間:2021-04-27 14:23:55 來源:億速云 閱讀:363 作者:小新 欄目:編程語言

這篇文章主要介紹java中wait調(diào)用中斷的解決方法,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

Java的優(yōu)點是什么

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è)資訊頻道!

向AI問一下細節(jié)

免責(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)容。

AI