- すべてのスーパー・インタフェース:
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
- 入出力エラーが発生した場合
-