|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object | +--java.nio.channels.spi.AbstractInterruptibleChannel
割り込み可能チャネルのベース実装クラスです。
このクラスは、チャネルの非同期クローズと割り込みを実装するのに必要な低レベルの機構をカプセル化します。具象チャネルクラスは、無期限にブロックされる入出力操作を呼び出す前に 具象チャネルクラスも、 このクラスは、
begin
メソッド、呼び出したあとに end
メソッドを呼び出す必要があります。通常これらのメソッドは、end
メソッドが必ず呼び出されるように、try ブロック内で使用されます。
boolean completed = false;
try {
begin();
completed = ...; // Perform blocking I/O operation
return ...; // Return result
} finally {
end(completed);
}
end
メソッドの completed 引数は、入出力操作が完了しているかどうか、すなわち、呼び出し元に何らかの変化が起こっているかどうかを示します。たとえば、バイトを読み取る操作の場合、この引数は、バイトが呼び出し元のターゲットバッファに実際に転送された場合にかぎり true になります。
implCloseChannel
メソッドを実装する必要があります。チャネルに対するネイティブの入出力操作の途中で別のスレッドがブロックされている間にこのメソッドを呼び出すと、この操作は、例外をスローするか通常の方法でただちに終了します。スレッド割り込みが発生した場合や、このスレッドがブロックされているチャネルが非同期でクローズされた場合、チャネルの end
メソッドは適切な例外をスローします。
Channel
指定の実装に必要な同期処理を行います。implCloseChannel
メソッドの実装を、チャネルをクローズしようとしている可能性があるその他のスレッドと同期化する必要はありません。
コンストラクタの概要 | |
protected |
AbstractInterruptibleChannel()
このクラスの新しいインスタンスを初期化します。 |
メソッドの概要 | |
protected void |
begin()
無期限にブロックされる入出力操作の開始をマークします。 |
void |
close()
このチャネルをクローズします。 |
protected void |
end(boolean completed)
無期限にブロックされる入出力操作の終了をマークします。 |
protected abstract void |
implCloseChannel()
このチャネルをクローズします。 |
boolean |
isOpen()
現在のチャネルの状態がオープンであるかどうかを判断します。 |
クラス java.lang.Object から継承したメソッド |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
コンストラクタの詳細 |
protected AbstractInterruptibleChannel()
メソッドの詳細 |
public final void close() throws IOException
チャネルがすでにクローズしている場合、このメソッドはただちに終了します。それ以外の場合は、チャネルのクローズを検出すると、このクローズ操作を完了するため implCloseChannel
メソッドを呼び出します。
Channel
内の close
IOException
- 入出力エラーが発生した場合protected abstract void implCloseChannel() throws IOException
このメソッドは、実際にチャネルをクローズするため、close
メソッドによって呼び出されます。このメソッドは、チャネルがまだクローズしておらず、今後呼び出される可能性がない場合にのみ呼び出されます。
このメソッドの実装は、このチャネルに対する入出力操作の途中でブロックされるその他のスレッドを、例外をスローするか、通常の方法を使って、ただちに終了させることになっています。
IOException
- チャネルのクローズ中に入出力エラーが発生した場合public final boolean isOpen()
Channel
の記述:
Channel
内の isOpen
protected final void begin()
このメソッドを呼び出すときは、このチャネルの非同期クローズと割り込みを実装するため、上記のように try ... finally ブロックを使って、連携する end
メソッドも呼び出します。
protected final void end(boolean completed) throws AsynchronousCloseException
このメソッドを呼び出すときは、このチャネルの非同期クローズと割り込みを実装するため、上記のように try ... finally ブロックを使って、連携する begin
メソッドも呼び出します。
completed
- 入出力操作が正しく完了した場合、すなわち操作の呼び出し側に何らかの変化が見られた場合にかぎり true
AsynchronousCloseException
- チャネルが非同期クローズされた場合
ClosedByInterruptException
- 入出力操作中にブロックされたスレッドに割り込みが発生した場合
|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Java、Java 2D、および JDBC は米国ならびにその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.