モジュール java.base
パッケージ java.nio.channels

インタフェースInterruptibleChannel

  • すべてのスーパー・インタフェース:
    AutoCloseable, Channel, Closeable
    既知のすべての実装クラス:
    AbstractInterruptibleChannel, AbstractSelectableChannel, DatagramChannel, FileChannel, Pipe.SinkChannel, Pipe.SourceChannel, SctpChannel, SctpMultiChannel, SctpServerChannel, SelectableChannel, ServerSocketChannel, SocketChannel


    public interface InterruptibleChannel
    extends Channel
    非同期のクローズや割込みが可能なチャネルです。

    このインタフェースを実装したチャネルは非同期クローズ可能です。割込み可能なチャネルの入出力操作中にブロックされたスレッドがある場合、別のスレッドはそのチャネルのcloseメソッドを呼び出すことができます。 これによって、ブロックされたスレッドがAsynchronousCloseExceptionを受け取ります。

    このインタフェースを実装したチャネルは割込み可能でもあります。割込み可能なチャネルの入出力操作中にブロックされたスレッドがある場合、別のスレッドはブロックされたスレッドのinterruptメソッドを呼び出すことができます。 これによってチャネルがクローズし、ブロックされたスレッドがClosedByInterruptExceptionを受け取ります。続いて、ブロックされたスレッドの割込みステータスが設定されます。

    スレッドの割込みステータスがすでに設定されている状態で、チャネル上でブロック入出力操作を呼び出した場合、チャネルはクローズし、スレッドは即座にClosedByInterruptExceptionを受け取ります。このときも、割込みステータスは設定されたままです。

    チャネルは、このインタフェースを実装している場合にかぎり、非同期クローズと割込みをサポートします。 必要な場合は、instanceof演算子を使って実行時にテストすることができます。

    導入されたバージョン:
    1.4
    • メソッドの詳細

      • close

        void close​()
            throws IOException
        現在のチャネルをクローズします。

        現在このチャネルの入出力操作でブロックされているすべてのスレッドがAsynchronousCloseExceptionを受け取ります。

        それ以外の場合は、このメソッドはChannelインタフェースの指定どおりに動作します。

        定義:
        close、インタフェース: AutoCloseable
        定義:
        close、インタフェース: Channel
        定義:
        close、インタフェース: Closeable
        例外:
        IOException - 入出力エラーが発生した場合