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」をご参照ください。
関連記事
- API 使用例
- BlockingQueue (ブロッキング・キュー)
- Callable
- CancellationException
- ConcurrentHashMap.KeySetView (並列処理用セット)
- ConcurrentLinkedDeque (並列処理用・両端キュー)
- ConcurrentLinkedQueue (並列処理用キュー)
- ConcurrentMap (並列処理用マップ)
- ConcurrentModificationException (並列処理例外)
- ConcurrentSkipListSet (並列処理用セット)
- Condition (同期)
- CopyOnWriteArrayList (並列処理用リスト)
- CopyOnWriteArraySet (並列処理用セット)
- CountDownLatch (同期)
- CyclicBarrier (同期)
- Exchanger (同期)
- ExecutionException
- Executor
- ExecutorService
- Executors
- Future
- Future.State
- FutureTask
- InterruptedException (割込み例外)
- Lock (同期)
- Object (オブジェクト)
- Runnable
- Semaphore (セマフォ)
- Thread (スレッド)
- ThreadGroup
- ThreadLocal
- TimeUnit