Javaで待機通話の中断を解決する方法

WBOY
リリース: 2023-04-25 10:34:06
転載
1281 人が閲覧しました

1. 解決策

(1) Java スレッドを使用する場合、wait メソッドを使用することが多く、wait メソッドの呼び出し時に中断されると、jvm がキャプチャします。割り込みを解除し、待機命令の呼び出しを続行します。

(2) このとき割り込み送信方法を使用しても効果はありません。

(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で待機通話の中断を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート