広告

Java : InterruptedException (割込み例外) - API使用例

InterruptedException (Java SE 21 & JDK 21) の使用例まとめです。
だいたいのメソッドを網羅済みです。
API仕様書のおともにどうぞ。


概要

あるスレッドが待ち状態、休止状態、または占有されているとき、アクティビティの前かその間のいずれかにそのスレッドで割込みが発生した場合にスローされます。

クラス構成

スレッドA、スレッドB があるとします。

スレッドA が待ち(wati) 状態のときに、スレッドBからスレッドAに対して割り込み(interrupt) すると、スレッドA で InterruptedException が発生して待ち状態が解除されます。

シーケンス

InterruptedException が発生すると、割り込みステータスはクリアされます。
その点はご注意ください。

try (final var executor = Executors.newSingleThreadExecutor()) {

    System.out.println("-- submit --");
    final var future = executor.submit(() -> {
        try {
            System.out.println("sleep ...");
            TimeUnit.SECONDS.sleep(5);
        } catch (InterruptedException e) {
            System.out.println("InterruptedException!");
        }
    });

    TimeUnit.SECONDS.sleep(1);

    System.out.println("-- interrupt --");
    future.cancel(true);
}

// 結果
// ↓
//-- submit --
//sleep ...
//-- interrupt --
//InterruptedException!

コンストラクタ

InterruptedException ()

詳細メッセージなしでInterruptedExceptionを構築します。

final var e = new InterruptedException();
System.out.println(e); // java.lang.InterruptedException

InterruptedException (String s)

指定された詳細メッセージを持つInterruptedExceptionを構築します。

final var e = new InterruptedException("abcd");
System.out.println(e); // java.lang.InterruptedException: abcd

Throwableで宣言されたメソッド

addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString

Java API 使用例 : Throwable」をご参照ください。


関連記事

ページの先頭へ