Java : ClosedByInterruptException - API使用例
ClosedByInterruptException (Java SE 24 & JDK 24) の使い方まとめです。
ほとんどのメソッドにサンプルコードがあります。
APIドキュメントのおともにどうぞ。
概要
スレッドがチャネルでの入出力操作でブロックされているにもかかわらず、別のスレッドから割込みを受けた場合に受信するチェック例外です。 この例外がスローされる前に、チャネルはクローズされます。また、以前からブロックされているスレッドの割込み状態の設定も完了します。
ClosedByInterruptException はチェック例外です。
ブロック中のチャネルが別スレッドで割り込まれたときなどにスローされます。
try (final var executor = Executors.newSingleThreadExecutor()) {
final var future = executor.submit(() -> {
try (final var channel = ServerSocketChannel.open()) {
System.out.println("bind ...");
channel.bind(new InetSocketAddress("127.0.0.1", 8000));
System.out.println("bind OK!");
System.out.println("accept ...");
channel.accept();
System.out.println("accept OK!");
} catch (AsynchronousCloseException e) {
System.out.println(e);
} catch (IOException e) {
System.out.println("IOException!");
}
});
TimeUnit.SECONDS.sleep(2);
System.out.println("-- future.cancel --");
future.cancel(true);
}
// 結果
// ↓
//bind ...
//bind OK!
//accept ...
//-- future.cancel --
//java.nio.channels.ClosedByInterruptException
コンストラクタ
ClosedByInterruptException ()
このクラスのインスタンスを構築します。
final var e = new ClosedByInterruptException();
System.out.println(e); // java.nio.channels.ClosedByInterruptException
Throwableで宣言されたメソッド
addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
「Java API 使用例 : Throwable」をご参照ください。