Java : ClosedByInterruptException 示例

Java 中的 ClosedByInterruptException (Java SE 24 & JDK 24) 及其示例。
您将找到大多数 ClosedByInterruptException 方法的代码示例。

注解 :

  • 本文可能使用了翻译软件以方便阅读。 另请查看英文原文

简介

当一个线程在通道上执行 I/O 操作期间被另一个线程中断时,该线程会收到已检查异常。在抛出此异常之前,通道必须已关闭,并且先前被阻塞的线程的中断状态必须已设置。 (机器翻译)

Class diagram

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);
}

// Result
// ↓
//bind ...
//bind OK!
//accept ...
//-- future.cancel --
//java.nio.channels.ClosedByInterruptException

Constructors

ClosedByInterruptException ()

构造此类的一个实例。 (机器翻译)

final var e = new ClosedByInterruptException();
System.out.println(e); // java.nio.channels.ClosedByInterruptException

Methods declared in Throwable

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

请参阅下面的链接。


相关文章

To top of page