Java は、Thread クラスの Interrupted() 関数を使用して、現在のスレッドが中断されているかどうかを判断します。

PHPz
リリース: 2023-07-26 15:51:19
オリジナル
1554 人が閲覧しました

Java は、Thread クラスの Interrupted() 関数を使用して、現在のスレッドが割り込まれたかどうかを判断します。

Java マルチスレッド プログラミングでは、割り込みは一般的なスレッド通信メカニズムです。スレッドは、interrupt() メソッドを呼び出すことによって、別のスレッドに割り込み信号を送信できます。割り込み信号を受信したスレッドは、割り込みにどのように応答するかを決定できます。 Java の Thread クラスは、現在のスレッドが中断されているかどうかを判断するための interrupted() メソッドを提供します。

interrupted() メソッドは、ブール値を返す静的メソッドです。このメソッドが呼び出されると、現在のスレッドが中断されているかどうかが判断され、中断ステータスがクリアされます。つまり、中断ステータスが false にリセットされます。 interrupted() メソッドを呼び出す前にスレッドが中断された場合、interrupted() メソッドは true を返し、それ以外の場合は false を返します。

次は、interrupted() メソッドの使用法を示す簡単な例です:

public class InterruptExample implements Runnable {

    public void run() {
        try {
            System.out.println("线程开始执行");
            for (int i = 1; i <= 10; i++) {
                System.out.println("执行第 " + i + " 次任务");
                Thread.sleep(1000);
                if (Thread.interrupted()) {
                    System.out.println("线程收到中断信号");
                    throw new InterruptedException();
                }
            }
        } catch (InterruptedException e) {
            System.out.println("线程被中断");
        } finally {
            System.out.println("线程结束执行");
        }
    }

    public static void main(String[] args) {
        Thread thread = new Thread(new InterruptExample());
        thread.start();
        try {
            Thread.sleep(5000);
            thread.interrupt();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}
ログイン後にコピー

上の例では、Runnable の実装を作成しました。 インターフェイス InterruptExample のクラス。 run() メソッドでは、ループを使用して、スレッドによって実行されるタスクをシミュレートします。各タスクの実行後、スレッドは Thread.sleep() メソッドによって 1 秒間一時停止されます。各タスクが実行される前に、Thread.interrupted() メソッドを呼び出してスレッドが中断されているかどうかを判断します。中断されている場合は、InterruptedException 例外がスローされます。

main() メソッドで、新しいスレッドを作成し、start() メソッドを使用してスレッドを開始します。次に、メインスレッドは 5 秒間一時停止し、interrupt() メソッドを呼び出して新しいスレッドに割り込み信号を送信します。この例を通じて、次の点を確認できます。

  1. スレッドは run() メソッドでタスクを 10 回実行します。
  2. タスクの実行中にスレッドが中断されると、スレッドはただちに実行を停止し、InterruptedException 例外をスローします。
  3. Thread.interrupted() メソッドを呼び出す前にスレッドが中断された場合、Thread.interrupted() メソッドは true を返します。
  4. Thread.interrupted() メソッドを呼び出した後、スレッドの割り込みステータスは false にリセットされます。

interrupted() メソッドを使用すると、現在のスレッドが中断されているかどうかを簡単に判断し、必要に応じてそれを処理できます。ただし、スレッドが中断された場合、スレッドは実行をすぐに停止せず、次の中断可能な状態 (wait()sleep() など) まで待機することに注意してください。 join()) が表示されると停止します。したがって、マルチスレッド コードを作成する場合は、スレッドがリソースを安全に停止および解放できるように、スレッド内の割り込み処理ロジックを合理的に設計する必要があります。

以上がJava は、Thread クラスの Interrupted() 関数を使用して、現在のスレッドが中断されているかどうかを判断します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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