|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
| 前のパッケージ 次のパッケージ | フレームあり フレームなし | |||||||||
参照先:
説明
| インタフェースの概要 | |
|---|---|
| ByteChannel | バイトの読み込みと書き込みができるチャネルです。 |
| Channel | 入出力操作に関係するチャネルです。 |
| GatheringByteChannel | バッファシーケンスからバイトを書き込むことができるチャネルです。 |
| InterruptibleChannel | 非同期のクローズや割り込みが可能なチャネルです。 |
| ReadableByteChannel | バイトを読み取ることができるチャネルです。 |
| ScatteringByteChannel | バッファシーケンスにバイトを読み込むことができるチャネルです。 |
| WritableByteChannel | バイトを書き込むことができるチャネルです。 |
| クラスの概要 | |
|---|---|
| Channels | チャネルとストリームのためのユーティリティメソッドです。 |
| DatagramChannel | データグラム型ソケットの選択可能なチャネルです。 |
| FileChannel | ファイルの読み込み、書き込み、マッピング、操作用チャネルです。 |
| FileChannel.MapMode | ファイルマッピングモードの型保証された列挙です。 |
| FileLock | ファイル領域上のロックを示すトークンです。 |
| Pipe | 単方向パイプを実装する一組のチャネルです。 |
| Pipe.SinkChannel | Pipe の書き込み側を表すチャネルです。 |
| Pipe.SourceChannel | Pipe の読み込み側を表すチャネルです。 |
| SelectableChannel | Selector 経由で多重化できるチャネルです。 |
| SelectionKey | SelectableChannel が Selector に登録されていることを示すトークンです。 |
| Selector | SelectableChannel オブジェクトのマルチプレクサです。 |
| ServerSocketChannel | ストリーム型リスニングソケット用の選択可能なチャネルです。 |
| SocketChannel | ストリーム型接続ソケット用の選択可能チャネルです。 |
| 例外の概要 | |
|---|---|
| AlreadyConnectedException | すでに接続されている SocketChannel への接続を試みたときにスローされる、チェックされない例外です。 |
| AsynchronousCloseException | 別のスレッドがチャネルまたは入出力操作時にブロックされるチャネルの一部をクローズしたときにスレッドが受け取るチェック例外です。 |
| CancelledKeyException | すでに無効になった選択キーを使用しようとしたときにスローされるチェックされない例外です。 |
| ClosedByInterruptException | スレッドがチャネルでの入出力操作でブロックされているにもかかわらず、別のスレッドから割り込みを受けた場合に受信するチェック例外です。 |
| ClosedChannelException | クローズしたチャネルに対する入出力操作を行おうとしたとき、または実行しようとした入出力操作に対してそのチャネルがクローズされている場合にスローされるチェック例外です。 |
| ClosedSelectorException | クローズしたセレクタに対する入出力操作を呼び出そうとしたときにスローされるチェックされない例外です。 |
| ConnectionPendingException | 非ブロック接続操作の進行中に SocketChannel に接続しようとしたときにスローされる、チェックされない例外です。 |
| FileLockInterruptionException | ファイルロックの獲得を待機しているスレッドに対して別のスレッドから割り込みがあったときに受け取られるチェック例外です。 |
| IllegalBlockingModeException | ブロックモードが不正であるのに、チャネル上でブロックモード固有の操作を呼び出したときにスローされるチェックされない例外です。 |
| IllegalSelectorException | チャネルの作成元プロバイダ以外が作成したセレクタにチャネルを登録しようとしたときにスローされるチェックされない例外です。 |
| NoConnectionPendingException | SocketChannel の connect メソッドの呼び出しがまだ完了していないのに、finishConnect メソッドを呼び出した場合にスローされる未確認の例外です。 |
| NonReadableChannelException | 最初は読み込みのためにオープンされていなかったチャネルから読み込みを行おうとしたときにスローされるチェックされない例外です。 |
| NonWritableChannelException | 最初は書き込みのためにオープンされていなかったチャネルに対して書き込みを行おうとしたときにスローされるチェックされない例外です。 |
| NotYetBoundException | 未バインドのサーバソケットチャネル上で入出力操作を呼び出そうとしたときにスローされるチェックされない例外です。 |
| NotYetConnectedException | 未接続のソケットチャネル上で入出力操作を呼び出そうとしたときにスローされるチェックされない例外です。 |
| OverlappingFileLockException | ロックを獲得しようとしたファイル領域が、すでに同じ Java 仮想マシンによってロックされている領域にオーバーラップしている場合、またはその他のスレッドが同じファイルのオーバーラップしている領域をロックしようと待機している場合にスローされるチェックされない例外です。 |
| UnresolvedAddressException | 未解決のソケットアドレスに対してネットワーク操作を呼び出そうとしたときにスローされるチェックされない例外です。 |
| UnsupportedAddressTypeException | サポートされていない型のソケットアドレスにバインドまたは接続しようとしたときにスローされるチェックされない例外です。 |
入出力操作を実行できるエンティティ (ファイル、ソケットなど) への接続を表すチャネルや、多重化された非ブロック入出力操作用のセレクタを定義します。
チャネル 説明 「チャネル」は、1 つ以上の入出力操作 (読み込み、書き込みなど) を実行できるハードウェアデバイス、ファイル、ネットワークソケット、プログラムコンポーネントなどのエンティティへのオープン接続を表します。 ファイルチャネル 説明 多重化された非ブロック入出力 説明 「セレクタ」、「選択可能チャネル」、および「選択キー」によって提供される多重化された非ブロック入出力は、スレッド指向のブロック入出力よりスケーラブルです。
セレクタは選択可能チャネルのマルチプレクサです。選択可能チャネルは、非ブロックモードに分類される特殊なチャネルでもあります。多重化された入出力操作を実行したい場合は、まず選択可能チャネルを 1 個以上作成します。次に、これを非ブロックモードにして、セレクタに セレクタにチャネルを登録したら、範囲があらかじめ宣言されている 1 個以上の操作の実行が可能になったチャネルを検出するため、選択操作を実行します。チャネルの準備ができていれば、登録時に返されたキーがセレクタの「選択キーセット」に追加されます。このキーセットと、このセットに含まれるキーを調べることにより、各チャネルが実行できる操作を判断できます。要求された入出力操作を実行するため、各キーから対応するチャネルを取得できます。
選択キーは、そのチャネルがある操作を実行できる状態になっていることを示します。ただし、これは単なるヒントであって、スレッドがブロックされることなくその操作を実行できることを保証するものではありません。多重化入出力処理を実行するコードは、ヒントの内容が間違っていると判明した場合にそのヒントを無視するように記述してください。
このパッケージは、 セレクタ、選択可能チャネル、選択キーの実装を置き換えたい場合は、 多重化入出力の抽象を実装するために必要とされる登録および同期処理の大部分は、
Channel入出力操作が行われる場所 ReadableByteChannelバッファへの読み込みを行う ScatteringByteChannel バッファシーケンスへの読み込みを行う WritableByteChannelバッファからの書き出しを行う GatheringByteChannelバッファシーケンスからの書き出しを行う ByteChannelバッファへの読み込み、バッファからの書き出しを行う Channelsチャネルとストリームの連携のためのユーティリティメソッド Channel インタフェースで指定されているとおり、チャネルはオープンかクローズのいずれかです。どちらの状態のチャネルも、「非同期クローズ可能」かつ「割り込み可能」です。
Channell インタフェースは、新しい入出力操作を指定する複数のほかのインタフェースによって拡張されています。
ReadableByteChannel インタフェースは、チャネルからバッファへバイトを読み込む read メソッドを指定します。同様に、WritableByteChannel インタフェースは、バッファからチャネルへバイトを書き出す write メソッドを指定します。ByteChannel インタフェースは、これら 2 つのインタフェースを統一したインタフェースであり、バイトの読み込みと書き出しの両方を実行できる一般的なチャネルで使用されます。
ScatteringByteChannel インタフェースと GatheringByteChannel インタフェースは、それぞれ ReadableByteChannel インタフェースおよび WritableByteChannel インタフェースを拡張したもので、それぞれ、単一のバッファではなく複数のバッファのシーケンスを使用する read メソッドおよび write メソッドを追加しています。
Channels ユーティリティクラスは、java.io パッケージのストリームクラスとこのパッケージのチャネルクラスの連携をサポートする static メソッドを定義します。適切なチャネルを InputStream または OutputStream から構築することができます。逆に、InputStream または OutputStream をチャネルから構築することもできます。Reader は、指定された文字セットを使って指定された読み込み可能バイトチャネルのバイトをデコードするように構築できます。一方、Writer キャッシュは、指定された文字セットを使って文字をバイトへ符号化し、指定された書き込み可能バイトチャネルに書き込むように構築できます。
FileChannelファイルの読み込み、書き込み、マッピング、操作 FileLockファイルの (領域の) ロック MappedByteBuffer ファイル領域にマッピングされるダイレクト byte バッファ FileChannel クラスは、ファイルに接続されたチャネルからのバイトの読み込み、ファイルに接続されたチャネルへのバイトの書き込みといった一般的な操作のほか、現在のファイル位置の照会と変更、ファイル末尾の切り捨てによる特定サイズへの変更をサポートします。このクラスは、ファイル全体またはファイル内の特定の領域のロックを獲得するメソッドを定義します。こうしたメソッドは、FileLock クラスのインスタンスを返します。さらに、FileChannel クラスは、ファイルの更新内容をそのファイルが格納されている記憶装置に強制的に書き込むメソッドや、ファイルとその他のチャネル間で効率的にバイトを転送するメソッドや、ファイルの領域をメモリに直接マッピングするメソッドを定義します。この最後の操作のためにインスタンスを作成する MappedByteBuffer クラスは、いくつかのファイル関連操作を備えた ByteBuffer クラスを拡張したものです。
java.io パッケージの FileInputStream クラス、FileOutputStream クラス、および RandomAccessFile クラスに、それぞれ getChannel メソッドが追加されました。これらのうちいずれかのクラスのインスタンスに対してこのメソッドを呼び出すと、基礎にあるファイルに接続されたファイルチャネルが返されます。
SelectableChannel多重化が可能なチャネル DatagramChanneljava.net.DatagramSocket 用のチャネル Pipe.SinkChannelパイプの書き込み側 Pipe.SourceChannelパイプの読み込み側 ServerSocketChannel java.net.ServerSocket 用のチャネル SocketChanneljava.net.Socket 用のチャネルSelector選択可能なチャネルのマルチプレクサ SelectionKeyセレクタへのチャネルの登録を表すトークン Pipe単方向パイプを形成する 2 つのチャネル 登録します。チャネルを登録する際は、使用可能かどうかをセレクタがテストする一連の入出力操作を指定します。セレクタは、登録を表す選択キーを返します。
java.net パッケージで定義されている DatagramSocket クラス、ServerSocket クラス、および Socket クラスに対応する選択可能チャネルクラスを定義します。これらのクラスには、チャネルに関連付けられたソケットをサポートできるように、小規模な変更が加えられました。このパッケージは、単方向パイプを実装する単純なクラスも定義します。どの場合にも、新しい選択可能チャネルを作成するには、対応するクラスの open という static メソッドを呼び出します。チャネルが関連ソケットを必要としている場合は、この操作の副作用としてソケットが作成されます。
java.nio.channels.spi パッケージで定義されている SelectorProvider クラスの代替定義またはインスタンスを「プラグイン」します。ただし、この機能は、すべての開発者を対象とした機能ではありません。これは、非常に高い性能が要求される場合に、オペレーティングシステム固有の入出力多重化メカニズムを活用できるようにする、上級ユーザ向け機能です。
java.nio.channels.spi パッケージの AbstractInterruptibleChannel クラス、AbstractSelectableChannel クラス、AbstractSelectionKey クラス、および AbstractSelector クラスによって実行されます。カスタムセレクタプロバイダを定義する際は、AbstractSelector クラスと AbstractSelectionKey クラスだけを直接サブクラス化します。カスタムチャネルクラスは、このパッケージで定義されている適切な SelectableChannel サブクラスを拡張する必要があります。
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
| 前のパッケージ 次のパッケージ | フレームあり フレームなし | |||||||||
Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。