Java : TimeoutException (スレッド) - API使用例
TimeoutException (Java SE 23 & JDK 23) の使い方まとめです。
ほとんどのメソッドにサンプルコードがあります。
APIドキュメントのおともにどうぞ。
概要
ブロック操作がタイム・アウトしたときにスローされる例外です。 タイム・アウトが設定されたブロック操作では、タイム・アウトが発生したことを示す手段が必要です。 このような操作の多くでは、タイム・アウトを示す値を返すことが可能です。不可能な場合や望ましくない場合はTimeoutExceptionを宣言してスローするようにしてください。
TimeoutException はチェック例外です。
スレッドを待機させる操作がタイムアウトしたときに発生します。
try (final var executorService = Executors.newSingleThreadExecutor()) {
final var future = executorService.submit(() -> {
try {
System.out.println("task start");
TimeUnit.SECONDS.sleep(3);
return "abcd";
} catch (InterruptedException e) {
System.out.println("Interrupted!");
return null;
} finally {
System.out.println("task end");
}
});
TimeUnit.SECONDS.sleep(1);
try {
System.out.println("-- get start --");
final var ret = future.get(1, TimeUnit.SECONDS);
System.out.println("-- get end --");
System.out.println("ret = " + ret);
} catch (TimeoutException e) {
System.out.println("TimeoutException!");
}
}
// 結果
// ↓
//task start
//-- get start --
//TimeoutException!
//task end
コンストラクタ
TimeoutException ()
詳細メッセージを指定しないでTimeoutExceptionを構築します。
final var e = new TimeoutException();
System.out.println(e); // java.util.concurrent.TimeoutException
TimeoutException (String message)
指定された詳細メッセージを持つTimeoutExceptionを構築します。
final var e = new TimeoutException("abc");
System.out.println(e); // java.util.concurrent.TimeoutException: 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 (ブロッキング・キュー)
- BrokenBarrierException
- 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