広告

Java : BrokenBarrierException - API使用例

BrokenBarrierException (Java SE 23 & JDK 23) の使い方まとめです。
ほとんどのメソッドにサンプルコードがあります。
APIドキュメントのおともにどうぞ。


概要

スレッドが故障状態にあるバリアーを待機しようとしているとき、または待機中にバリアーが故障状態になったときに、例外をスローします。

クラス構成

BrokenBarrierException はチェック例外です。
CyclicBarrier で待機中に、そのバリアが破壊(broken) された場合に発生します。

final var barrier = new CyclicBarrier(3);
System.out.println("parties = " + barrier.getParties());

try (final var executor = Executors.newFixedThreadPool(3)) {

    final var futureA = executor.submit(() -> {
        try {
            System.out.println("A : task start");
            barrier.await();
        } catch (InterruptedException | BrokenBarrierException e) {
            System.out.println("A : " + e.getClass().getSimpleName());
        }
    });

    TimeUnit.SECONDS.sleep(1);

    executor.submit(() -> {
        try {
            System.out.println("B : task start");
            barrier.await();
        } catch (InterruptedException | BrokenBarrierException e) {
            System.out.println("B : " + e.getClass().getSimpleName());
        }
    });

    TimeUnit.SECONDS.sleep(1);

    System.out.println("task A cancel!");

    final var ret = futureA.cancel(true);
    System.out.println("cancelled = " + ret);
}

// 結果
// ↓
//parties = 3
//A : task start
//B : task start
//task A cancel!
//A : InterruptedException
//B : BrokenBarrierException
//cancelled = true

コンストラクタ

BrokenBarrierException ()

詳細メッセージを指定しないでBrokenBarrierExceptionを構築します。

final var e = new BrokenBarrierException();
System.out.println(e); // java.util.concurrent.BrokenBarrierException

BrokenBarrierException (String message)

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

final var e = new BrokenBarrierException("abc");
System.out.println(e); // java.util.concurrent.BrokenBarrierException: abc
System.out.println(e.getMessage()); // abc

Throwableで宣言されたメソッド

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

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


関連記事

ページの先頭へ