- すべてのスーパー・インタフェース:
AsynchronousChannel
,AutoCloseable
,Channel
,Closeable
- 既知のすべての実装クラス:
AsynchronousSocketChannel
public interface AsynchronousByteChannel extends AsynchronousChannel
チャネルによっては、特定の時点で複数の読み取りまたは書込みが未処理になることが許可されない場合があります。 前の読取り操作が完了する前にスレッドがreadメソッドを呼び出すと、ReadPendingException
がスローされます。 同様に、前の書込みが完了する前にwriteメソッドが呼び出されると、WritePendingException
がスローされます。 読込み操作とその他の入出力操作を同時並行で実行できるかどうかは、チャネルの種類によって決まります。
ByteBuffers
は、複数のスレッドで並行して使用することはできません。 読取り操作または書込み操作を開始するときは、操作が完了するまでバッファへのアクセスが行われないよう注意する必要があります。
-
メソッドのサマリー
修飾子と型 メソッド 説明 Future<Integer>
read(ByteBuffer dst)
このチャネルのバイト・シーケンスを指定のバッファに読み込みます。<A> void
read(ByteBuffer dst, A attachment, CompletionHandler<Integer,? super A> handler)
このチャネルのバイト・シーケンスを指定のバッファに読み込みます。Future<Integer>
write(ByteBuffer src)
このチャネルのバイト・シーケンスを指定のバッファから書き出します。<A> void
write(ByteBuffer src, A attachment, CompletionHandler<Integer,? super A> handler)
このチャネルのバイト・シーケンスを指定のバッファから書き出します。インタフェース java.nio.channels.AsynchronousChannelで宣言されたメソッド
close
-
メソッドの詳細
-
read
<A> void read(ByteBuffer dst, A attachment, CompletionHandler<Integer,? super A> handler)このチャネルのバイト・シーケンスを指定のバッファに読み込みます。このメソッドは、このチャネルのバイト・シーケンスを指定のバッファに読み取るための非同期読込み操作を開始します。
handler
パラメータは、読取り操作が終了(または失敗)したときに呼び出される終了ハンドラです。 終了ハンドラに渡される結果は、読み取られたバイト数、またチャネルがストリームの終わりに達したためにバイトが読み取れなかった場合は-1
。読取り操作は、チャネルから最大rバイトを読み取ります。rは、読取りが試行されたときにバッファ内に残っているバイト数、
dst.remaining()
になります。 rが0の場合は、入出力操作を開始することなく読取り操作はただちに終了し、結果は0
になります。長さn (
0
<
n<=
r)のバイト・シーケンスが読み取られるとします。 このバイト・シーケンスがバッファに転送されるため、シーケンス内の最初のバイトのインデックスはp、最後のバイトのインデックスはp+
n-
1
になります。なお、pは、読取りが実行されるときのバッファの位置です。 バッファの位置は、終了時にp+
nに等しくなります。リミットに変化はありません。バッファは、複数のスレッドで並行して使用できないため、操作が完了するまでバッファにアクセスしないように注意してください。
このメソッドはいつでも呼び出すことができます。 チャネル・タイプによっては、特定の時点で複数の読取りが未処理になることが許可されない場合があります。 前の読取り操作が終了する前にスレッドが読取り操作を開始すると、
ReadPendingException
がスローされます。- 型パラメータ:
A
- 接続のタイプ- パラメータ:
dst
- バイトの転送先バッファattachment
- 入出力操作に接続されるオブジェクト。null
も可handler
- 終了ハンドラ- 例外:
IllegalArgumentException
- バッファが読取り専用である場合ReadPendingException
- 特定の時点で複数の読取りが未処理になることをチャネルが許可せず、前の読取りが終了していない場合ShutdownChannelGroupException
- チャネルが終了したgroup
に関連付けられている場合
-
read
Future<Integer> read(ByteBuffer dst)このチャネルのバイト・シーケンスを指定のバッファに読み込みます。このメソッドは、このチャネルのバイト・シーケンスを指定のバッファに読み取るための非同期読込み操作を開始します。 このメソッドは、
read(ByteBuffer,Object,CompletionHandler)
メソッドとまったく同じように動作します。ただし、終了ハンドラを指定する代わりに、このメソッドは保留状態の結果を表すFuture
を返します。Future
のget
メソッドは、読み取られたバイト数、またチャネルがストリームの終わりに達したためにバイトが読み込めなかった場合は-1
を返します。- パラメータ:
dst
- バイトの転送先バッファ- 戻り値:
- 操作の結果を表すFuture
- 例外:
IllegalArgumentException
- バッファが読取り専用である場合ReadPendingException
- 特定の時点で複数の読取りが未処理になることをチャネルが許可せず、前の読取りが終了していない場合
-
write
<A> void write(ByteBuffer src, A attachment, CompletionHandler<Integer,? super A> handler)このチャネルのバイト・シーケンスを指定のバッファから書き出します。このメソッドは、バイト・シーケンスを指定のバッファからこのチャネルに書き込むための非同期書込み操作を開始します。
handler
パラメータは、書込み操作が終了(または失敗)したときに呼び出される終了ハンドラです。 終了ハンドラに渡される結果は、書き込まれたバイト数です。書込み操作は、チャネルに最大rバイトを書き込みます。rは、書込みが試行されたときにバッファ内に残っているバイト数、
src.remaining()
になります。 rが0の場合は、入出力操作を開始することな書込み操作はただちに終了し、結果は0
になります。長さn (
0
<
n<=
r)のバイト・シーケンスが書き込まれるとします。 このバイト・シーケンスは、バッファのインデックスpから転送されます。pは、書込みが実行されるときのバッファの位置です。書き込まれる最後のバイトのインデックスはp+
n-
1
になります。 バッファの位置は、終了時にp+
nに等しくなります。リミットに変化はありません。バッファは、複数のスレッドで並行して使用できないため、操作が完了するまでバッファにアクセスしないように注意してください。
このメソッドはいつでも呼び出すことができます。 チャネル・タイプによっては、特定の時点で複数の書込みが未処理になることが許可されない場合があります。 前の書込み操作が終了する前にスレッドが書込み操作を開始すると、
WritePendingException
がスローされます。- 型パラメータ:
A
- 接続のタイプ- パラメータ:
src
- バイトの取得先バッファattachment
- 入出力操作に接続されるオブジェクト。null
も可handler
- 終了ハンドラ・オブジェクト- 例外:
WritePendingException
- 特定の時点で複数の書込みが未処理になることをチャネルが許可せず、前の書込みが終了していない場合ShutdownChannelGroupException
- チャネルが終了したgroup
に関連付けられている場合
-
write
Future<Integer> write(ByteBuffer src)このチャネルのバイト・シーケンスを指定のバッファから書き出します。このメソッドは、バイト・シーケンスを指定のバッファからこのチャネルに書き込むための非同期書込み操作を開始します。 このメソッドは、
write(ByteBuffer,Object,CompletionHandler)
メソッドとまったく同じように動作します。ただし、終了ハンドラを指定する代わりに、このメソッドは保留状態の結果を表すFuture
を返します。Future
のget
メソッドは書き込まれたバイト数を返します。- パラメータ:
src
- バイトの取得先バッファ- 戻り値:
- 操作の結果を表すFuture
- 例外:
WritePendingException
- 特定の時点で複数の書込みが未処理になることをチャネルが許可せず、前の書込みが終了していない場合
-