参照: 説明
| インタフェース | 説明 |
|---|---|
| AsynchronousByteChannel |
バイトの読取りと書込みができる非同期チャネルです。
|
| AsynchronousChannel |
非同期入出力操作をサポートするチャネルです。
|
| ByteChannel |
バイトの読み込みと書込みができるチャネルです。
|
| Channel |
入出力操作に関係するチャネルです。
|
| CompletionHandler<V,A> |
非同期入出力操作の結果を消費するためのハンドラです。
|
| GatheringByteChannel |
バッファ・シーケンスからバイトを書き込むことができるチャネルです。
|
| InterruptibleChannel |
非同期のクローズや割込みが可能なチャネルです。
|
| MulticastChannel |
IP (Internet Protocol)マルチキャストをサポートするネットワーク・チャネルです。
|
| NetworkChannel |
ネットワーク・ソケットへのチャネルです。
|
| ReadableByteChannel |
バイトを読み取ることができるチャネルです。
|
| ScatteringByteChannel |
バッファ・シーケンスにバイトを読み込むことができるチャネルです。
|
| SeekableByteChannel |
現在の位置を保持し、位置の変更を許可するバイト・チャネルです。
|
| WritableByteChannel |
バイトを書き込むことができるチャネルです。
|
| クラス | 説明 |
|---|---|
| AsynchronousChannelGroup |
リソースを共有するための非同期チャネルのグループ化です。
|
| AsynchronousFileChannel |
ファイルの読み込み、書き込み、操作用の非同期チャネルです。
|
| AsynchronousServerSocketChannel |
ストリーム型リスニング・ソケット用の非同期チャネルです。
|
| AsynchronousSocketChannel |
ストリーム型接続ソケット用の非同期チャネルです。
|
| Channels |
チャネルとストリームのためのユーティリティ・メソッドです。
|
| DatagramChannel |
データグラム型ソケットの選択可能なチャネルです。
|
| FileChannel |
ファイルの読み込み、書き込み、マッピング、操作用チャネルです。
|
| FileChannel.MapMode |
ファイル・マッピング・モードの型保証された列挙です。
|
| FileLock |
ファイル領域上のロックを示すトークンです。
|
| MembershipKey |
IP (Internet Protocol)マルチキャスト・グループのメンバーシップを表すトークンです。
|
| Pipe |
単方向パイプを実装する一組のチャネルです。
|
| Pipe.SinkChannel |
Pipeの書込み可能な終端を表すチャネルです。 |
| Pipe.SourceChannel |
Pipeの読取り可能な終端を表すチャネルです。 |
| SelectableChannel |
Selector経由で多重化できるチャネルです。 |
| SelectionKey |
SelectableChannelがSelectorに登録されていることを示すトークンです。 |
| Selector |
SelectableChannelオブジェクトのマルチプレクサです。 |
| ServerSocketChannel |
ストリーム型リスニング・ソケット用の選択可能なチャネルです。
|
| SocketChannel |
ストリーム型接続ソケット用の選択可能チャネルです。
|
| 例外 | 説明 |
|---|---|
| AcceptPendingException |
以前の受け付け操作が完了していないのにチャネル上で受け付け操作を開始しようとした場合にスローされる非チェック例外です。
|
| AlreadyBoundException |
すでにバインド済みのネットワーク指向チャネルのソケットをバインドしようとしたときにスローされる非チェック例外です。
|
| AlreadyConnectedException |
すでに接続済みの
SocketChannelを接続しようとしたときにスローされる非チェック例外です。 |
| AsynchronousCloseException |
別のスレッドがチャネルまたは入出力操作時にブロックされるチャネルの一部をクローズしたときにスレッドが受け取るチェック例外です。
|
| CancelledKeyException |
すでに無効になった選択キーを使用しようとしたときにスローされる非チェック例外です。
|
| ClosedByInterruptException |
スレッドがチャネルでの入出力操作でブロックされているにもかかわらず、別のスレッドから割込みを受けた場合に受信するチェック例外です。
|
| ClosedChannelException |
クローズしたチャネルに対する入出力操作を行おうとしたとき、または実行しようとした入出力操作に対してそのチャネルがクローズされている場合にスローされるチェック例外です。
|
| ClosedSelectorException |
クローズしたセレクタに対する入出力操作を呼び出そうとしたときにスローされる非チェック例外です。
|
| ConnectionPendingException |
非ブロック接続操作の進行中に
SocketChannelに接続しようとしたときにスローされる非チェック例外です。 |
| FileLockInterruptionException |
ファイル・ロックの獲得を待機しているスレッドに対して別のスレッドから割込みがあったときに受け取られるチェック例外です。
|
| IllegalBlockingModeException |
ブロック・モードが不正であるのに、チャネル上でブロック・モード固有の操作を呼び出したときにスローされる非チェック例外です。
|
| IllegalChannelGroupException |
同じプロバイダによって作成されなかったグループ内のチャネルを開こうとしたときにスローされる非チェック例外です。
|
| IllegalSelectorException |
チャネルの作成元プロバイダ以外が作成したセレクタにチャネルを登録しようとしたときにスローされる非チェック例外です。
|
| InterruptedByTimeoutException |
非同期操作が完了する前にタイム・アウト時間が経過したときにスレッドが受け取るチェック例外です。
|
| NoConnectionPendingException | |
| NonReadableChannelException |
最初は読込みのためにオープンされていなかったチャネルから読込みを行おうとしたときにスローされる非チェック例外です。
|
| NonWritableChannelException |
最初は書込みのためにオープンされていなかったチャネルに対して書込みを行おうとしたときにスローされる非チェック例外です。
|
| NotYetBoundException |
未バインドのサーバー・ソケット・チャネル上で入出力操作を呼び出そうとしたときにスローされる非チェック例外です。
|
| NotYetConnectedException |
未接続のソケット・チャネル上で入出力操作を呼び出そうとしたときにスローされる非チェック例外です。
|
| OverlappingFileLockException |
ロックを獲得しようとしたファイル領域が、すでに同じJava仮想マシンによってロックされている領域にオーバーラップしている場合、またはその他のスレッドが同じファイルのオーバーラップしている領域をロックしようと待機している場合にスローされる非チェック例外です。
|
| ReadPendingException |
以前の読取りが完了していないのに非同期ソケット・チャネルから読み取ろうとした場合にスローされる非チェック例外です。
|
| ShutdownChannelGroupException |
シャットダウン済みのグループ内でチャネルを構築しようとしたときや、チャネル・グループが終了したために入出力操作の終了ハンドラを呼び出せないときにスローされる非チェック例外です。
|
| UnresolvedAddressException |
未解決のソケット・アドレスに対してネットワーク操作を呼び出そうとしたときにスローされる非チェック例外です。
|
| UnsupportedAddressTypeException |
サポートされていない型のソケット・アドレスにバインドまたは接続しようとしたときにスローされる非チェック例外です。
|
| WritePendingException |
以前の書込みが完了していないのに非同期ソケット・チャネルに書き込もうとした場合にスローされる非チェック例外です。
|
チャネル 説明 Channel入出力操作が行われる場所 ReadableByteChannelバッファへの読込みを行う ScatteringByteChannelバッファ・シーケンスへの読込みを行う WritableByteChannelバッファからの書出しを行う GatheringByteChannelバッファ・シーケンスからの書込みを行う ByteChannelバッファへの読み込み、バッファからの書込みを行う SeekableByteChannel可変長のバイト・シーケンスが含まれているエンティティに接続された ByteChannelAsynchronousChannel非同期入出力操作をサポートする。 AsynchronousByteChannel非同期でバイトの読取りと書込みを行う NetworkChannelネットワーク・ソケットへのチャネル MulticastChannelIP (Internet Protocol)マルチキャスト・グループに参加できる Channelsチャネルとストリームの相互運用のためのユーティリティ・メソッド
チャネルは、ハードウェア・デバイス、ファイル、ネットワーク・ソケットのほか、1つ以上の個別の入出力操作(読み込み、書き込みなど)を実行できるプログラム・コンポーネントなどのエンティティへのオープン接続を表します。Channelインタフェースに指定されているとおり、チャネルの状態はオープンかクローズのどちらかです。どちらの状態のチャネルも、非同期クローズ可能かつ割込み可能です。
Channelインタフェースは、いくつかのほかのインタフェースによって拡張されます。
ReadableByteChannelインタフェースは、チャネルからバッファにバイトを読み取るreadメソッドを指定します。同様に、WritableByteChannelインタフェースは、バッファからチャネルにバイトを書き込むwriteメソッドを指定します。ByteChannelインタフェースは、これら2つのインタフェースを統一したインタフェースであり、バイトの読み込みと書出しの両方を実行できる一般的なチャネルで使用されます。SeekableByteChannelインタフェースは、チャネルの現在の位置とそのサイズを照会および変更するメソッドでByteChannelインタフェースを継承したものです。
シングル・バッファではなく複数のバッファのシーケンスを使用するreadメソッドとwriteメソッドを追加することにより、ScatteringByteChannelインタフェースはReadableByteChannelインタフェース、GatheringByteChannelインタフェースはWritableByteChannelインタフェースを継承します。
NetworkChannelインタフェースは、チャネルのソケットをバインドして、ソケットのバインド先のアドレスを取得するためのメソッドを指定し、ソケット・オプションを取得して設定するためのメソッドを指定します。MulticastChannelインタフェースは、IP (Internet Protocol)マルチキャスト・グループに参加するためのメソッドを指定します。
Channelsユーティリティ・クラスは、java.ioパッケージのストリーム・クラスとこのパッケージのチャネル・クラスの連携をサポートするstaticメソッドを定義します。適切なチャネルは、InputStreamやOutputStreamから構築できます。反対に、InputStreamやOutputStreamは、単一のチャネルから構築できます。Readerは、指定された文字セットを使って指定された読込み可能なバイト・チャネルのバイトをデコードするように構築できます。反対に、Writerは、指定された文字セットを使って文字をバイトへエンコードし、指定された書込み可能なバイト・チャネルに書き込むように構築できます。
ファイル・チャネル 説明 FileChannelファイルの読み込み、書き込み、マッピング、操作 FileLockファイルの(領域の)ロック MappedByteBufferファイル領域にマッピングされるダイレクトbyteバッファ
FileChannelクラスは、現在のファイル位置の照会および変更、ファイルの末尾の切詰めによる特定のサイズへの変更のほか、ファイルに接続されたチャネルからのバイトの読み込み、ファイルに接続されたチャネルへのバイトの書き込みといった一般的な操作をサポートします。このクラスは、ファイル全体またはファイル内の特定の領域のロックを獲得するメソッドを定義します。こうしたメソッドは、FileLockクラスのインスタンスを返します。{@link java.nio.channels.FileChannel}クラスは、ファイルの更新内容を、このファイルが格納されている記憶装置に強制的に書き込むメソッドも定義します。こうしたメソッドにより、ファイルとその他のチャネル間のバイトのやりとりが効率化されます。また、ファイル領域を直接メモリーにマッピングできるようになります。
FileChannelは、その静的なopenメソッドの1つを呼び出すか、java.ioクラスと同じ基礎となるファイルに接続されているファイル・チャネルを返すためにFileInputStream、FileOutputStreamまたはRandomAccessFileのgetChannelメソッドを呼び出すことで作成されます。
多重化された非ブロック入出力 説明
SelectableChannel多重化可能なチャネル DatagramChannelデータグラム型ソケットへのチャネル Pipe.SinkChannelパイプの書込み側 Pipe.SourceChannelパイプの読込み側 ServerSocketChannelストリーム型リスニング・ソケットへのチャネル SocketChannelストリーム型接続ソケットのチャネル Selector選択可能チャネルのマルチプレクサ SelectionKeyセレクタへのチャネルの
登録を表すトークンPipe単方向パイプを形成する2つのチャネル
セレクタ、選択可能チャネル、選択キーによって提供される多重化された非ブロック入出力は、スレッド指向のブロック入出力よりスケーラブルです。
セレクタは選択可能チャネルのマルチプレクサです。選択可能チャネルは、非ブロック・モードに分類できる特殊なタイプのチャネルでもあります。多重化入出力操作を実行するには、まず選択可能チャネルを1個以上作成して、これを非ブロック・モードにして、セレクタに登録します。チャネルを登録すると、一連の入出力操作が指定されます。セレクタは、準備の一環としてこれらの操作をテストし、登録を表す選択キーを返します。
セレクタにチャネルを登録したら、範囲があらかじめ宣言されている1個以上の操作の実行が可能になったチャネルを検出するため、選択操作を実行できます。チャネルの準備ができていれば、登録時に返されたキーがセレクタの選択キー・セットに追加されます。このキー・セットと、このセットに含まれるキーを調べることにより、各チャネルが実行できる操作を判断できます。要求された入出力操作を実行するため、各キーから対応するチャネルを取得できます。
選択キーは、そのチャネルがある操作を実行できる状態になっていることを示します。ただし、これは単なるヒントであって、スレッドがブロックされることなくある操作を実行できることを保証するわけではありません。ヒントの内容が明らかに不正な場合は、これを無視するために、多重化入出力処理を実行するコードを書き込む必要があります。
このパッケージは、java.netパッケージに定義されたDatagramSocket、ServerSocket、およびSocketクラスに対応する選択可能チャネル・クラスを定義します。これらのクラスには、チャネルに関連したソケットをサポートできるように、小規模な変更が加えられています。このパッケージは、単方向パイプを実装する単純なクラスも定義します。新しい選択可能チャネルは常に、対応するクラスのstatic openメソッドを呼び出すことによって作成されます。チャネルが関連ソケットを必要としている場合は、この操作の副作用としてソケットが作成されます。
セレクタ、選択可能チャネル、選択キーの実装を置き換えるには、java.nio.channels.spiパッケージに定義されているSelectorProviderクラスの代替定義またはインスタンスをプラグインします。ただし、この機能は、すべての開発者を対象とした機能ではありません。これは、非常に高い性能が要求される場合に、オペレーティング・システム固有の入出力多重化メカニズムを活用できるようにする、上級ユーザー向け機能です。
多重化入出力の抽象化を実装するために必要とされる登録および同期処理は、ほとんどの場合、java.nio.channels.spiパッケージのAbstractInterruptibleChannel、AbstractSelectableChannel、AbstractSelectionKeyおよびAbstractSelectorクラスによって実行されます。カスタム・セレクタ・プロバイダを定義する際、直接サブクラス化されるのはAbstractSelectorクラスとAbstractSelectionKeyクラスだけです。カスタムチャネルクラスは、このパッケージに定義されている適切なSelectableChannelサブクラスを拡張する必要があります。
非同期入出力 説明 AsynchronousFileChannelファイルの読み込み、書き込み、操作用の非同期チャネルです AsynchronousSocketChannelストリーム型接続ソケットへの非同期チャネルです AsynchronousServerSocketChannelストリーム型リスニング・ソケットへの非同期チャネルです CompletionHandler非同期操作の結果を消費するためのハンドラ AsynchronousChannelGroupリソースを共有するための非同期チャネルのグループ化
Asynchronous channelsは、非同期入出力操作が可能な特殊なタイプのチャネルです。非同期チャネルは非ブロックであり、非同期操作を開始するためのメソッドを定義して、それぞれの操作の保留にされている結果を表すFutureを返します。Futureを使用して、操作の結果をポーリングするか待機することができます。非同期入出力操作は、操作の完了時に呼び出すCompletionHandlerを指定することもできます。終了ハンドラは、入出力操作の結果を消費するために実行されるユーザー指定のコードです。
このパッケージは、ストリーム型接続またはリスニング・ソケット、またはデータグラム型ソケットに接続されている非同期チャネル・クラスを定義します。これは、ファイルの非同期読み取り、書き込み、および操作のためのAsynchronousFileChannelクラスも定義します。FileChannelと同様に、ファイルの末尾の切詰めによって特定のサイズに変更する、ファイルの更新内容をストレージ・デバイスに強制的に書き込む、またはファイル全体またはファイル内の特定の領域のロックを取得する操作をサポートします。FileChannelとは異なり、ファイル・ディレクトリの領域をメモリーにマッピングするためのメソッドは定義しません。メモリーにマッピングされた入出力が必要な場合は、FileChannelを使用できます。
非同期チャネルは、リソース共有のために非同期チャネル・グループにバインドされます。グループには、グループ内のチャネルで実行される非同期操作の結果を消費する入出力イベントを処理して、終了ハンドラにディスパッチするために、タスクの送信先の関連するExecutorServiceがあります。チャネルの作成時にオプションでグループを指定したり、チャネルをデフォルト・グループにバインドしたりすることができます。上級ユーザーは、独自の非同期チャネル・グループを作成するか、デフォルト・グループに使用するExecutorServiceを構成できます。
セレクタと同様に、非同期チャネルの実装を置き換えるには、java.nio.channels.spiパッケージに定義されているAsynchronousChannelProviderクラスの代替定義またはインスタンスをプラグインします。ただし、この機能は、すべての開発者を対象とした機能ではありません。これは、非常に高い性能が要求されるときに、オペレーティング・システム固有の非同期入出力メカニズムを活用できるようにする、上級ユーザー向け機能です。
ほかで指定がない場合、null引数をこのパッケージの任意のクラスまたはインタフェースのメソッドまたはコンストラクタへ渡すと、NullPointerExceptionがスローされます。
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.