|
JavaTM 2 Platform Std. Ed. v1.4.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 個以上の入出力操作 (読み込み、書き込みなど) を実行できるプログラムコンポーネントを表します。 シングルバッファではなく複数のバッファのシーケンスを使用する java.io パッケージの セレクタ、選択可能チャネル、選択キーによって提供される多重化された非ブロック入出力は、スレッド指向のブロック入出力よりスケーラブルです。
セレクタは選択可能チャネルのマルチプレクサです。選択可能チャネルは、非ブロックモードに分類される特殊なチャネルでもあります。多重化入出力操作を実行したい場合は、まず選択可能チャネルを 1 個以上作成します。次に、これを非ブロックモードにして、セレクタに セレクタにチャネルを登録したら、範囲があらかじめ宣言されている 1 個以上の操作の実行が可能になったチャネルを検出するため、選択操作を実行します。チャネルの準備ができていれば、登録時に返されたキーがセレクタの「選択キーセット」に追加されます。このキーセットと、このセットに含まれるキーを調べることにより、各チャネルが実行できる操作を判断できます。要求された入出力操作を実行するため、各キーから対応するチャネルを取得できます。
選択キーは、そのチャネルがある操作を実行できる状態になっていることを示します。ただし、これは単なるヒントであって、スレッドがブロックされることなくある操作を実行できることを保証するわけではありません。ヒントの内容が明らかに不正な場合は、これを無視するために、多重化入出力処理を実行するコードを書き込む必要があります。
このパッケージは、java.net パッケージに定義されている セレクタ、選択可能チャネル、選択キーの実装を置き換えたい場合は、java.nio.channels.spi パッケージに定義されている 多重化入出力の抽象を実装するために必要とされる登録および同期処理は、ほとんどの場合、java.nio.channels.spi パッケージの
チャネル
Channel
入出力操作が行われる場所
ReadableByteChannel
バッファへの読み込みを行う
ScatteringByteChannel
バッファシーケンスへの読み込みを行う
WritableByteChannel
バッファからの書き出しを行う
GatheringByteChannel
バッファシーケンスからの書き出しを行う
ByteChannel
バッファへの読み込み、バッファからの書き出しを行う
Channel
チャネルとストリームの相互運用のためのユーティリティメソッド
Channel
インタフェースの指定どおり、チャネルはオープンかクローズになります。どちらの状態のチャネルも、「非同期クローズ可能」かつ「割り込み可能」です。
Channel
インタフェースは、新しい入出力操作を指定する複数のインタフェースによって拡張されます。
ReadableByteChannel
インタフェースは、チャネルからバッファへバイトを読み込む read
メソッドを指定します。同様に、WritableByteChannel
インタフェースは、バッファからチャネルへバイトを書き出す write
メソッドを指定します。ByteChannel
インタフェースは、これら 2 つのインタフェースを統一したインタフェースであり、バイトの読み込みと書き出しの両方を実行できる一般的なチャネルで使用されます。
read
メソッドと write
メソッドを追加することにより、ScatteringByteChannel
インタフェースは ReadableByteChannel
インタフェース、GatheringByteChannel
インタフェースは WritableByteChannel
インタフェースを拡張します。
Channels
ユーティリティクラスは、java.io パッケージのストリームクラスとこのパッケージのチャネルクラスの連携をサポートする静的メソッドを定義します。適切なチャネルは、InputStream
や OutputStream
から構築できます。反対に、InputStream
や OutputStream
は、単一のチャネルから構築できます。Reader
は、指定された文字セットを使って指定された読み込み可能なバイトチャネルのバイトをデコードするように構築できます。反対に、Writer
は、指定された文字セットを使って文字をバイトへエンコードし、指定された書き込み可能なバイトチャネルに書き込むように構築できます。
ファイルチャネル
FileChannel
ファイルの読み込み、書き込み、マッピング、操作
FileLock
ファイルの (領域の) ロック
MappedByteBuffer
ファイル領域にマッピングされるダイレクト byte バッファ
FileChannel
クラスは、現在のファイル位置の照会および変更、ファイルの末尾の切り捨てによる特定のサイズへの変更のほか、ファイルに接続されたチャネルからのバイトの読み込み、ファイルに接続されたチャネルへのバイトの書き込みといった一般的な操作をサポートします。このクラスは、ファイル全体またはファイル内の特定の領域のロックを獲得するメソッドを定義します。こうしたメソッドは、FileLock
クラスのインスタンスを返します。FileChannel
クラスは、ファイルの更新内容を、このファイルが格納されている記憶装置に強制的に書き込むメソッドも定義します。こうしたメソッドにより、ファイルとその他のチャネル間のバイトのやりとりが効率化されます。また、ファイル領域を直接メモリにマッピングできるようになります。この最後の操作で作成される MappedByteBuffer
クラスのインスタンスは、ファイル関連操作によって ByteBuffer
クラスを拡張します。
FileInputStream
クラス、FileOutputStream
クラス、RandomAccessFile
クラスには、getChannel メソッドが追加されています。この 3 つのうちいずれかのクラスのインスタンス上で getChannel メソッドを呼び出すと、基本となるファイルに接続されたファイルチャネルが返されます。
多重化された非ブロック入出力
SelectableChannel
多重化可能なチャネル
DatagramChannel
java.net.DatagramSocket
のチャネル
Pipe.SinkChannel
パイプの書き込み側
Pipe.SourceChannel
パイプの読み込み側
ServerSocketChannel
java.net.ServerSocket
のチャネル
SocketChannel
java.net.Socket
のチャネル
Selector
選択可能チャネルのマルチプレクサ
SelectionKey
セレクタへのチャネルの登録を表す
トークン
Pipe
単方向パイプを形成する 2 つのチャネル
します。チャネルを登録すると、一連の入出力操作が指定されます。セレクタは、準備の一環としてこれらの操作をテストし、登録を表す選択キーを返します。
登録
DatagramSocket
クラス、ServerSocket
クラス、Socket
クラスに対応する選択可能チャネルクラスを定義します。これらのクラスには、チャネルに関連したソケットをサポートできるように、小規模な変更が加えられています。このパッケージは、単方向パイプを実装する単純なクラスも定義します。新しい選択可能チャネルは常に、対応するクラスの静的な open メソッドを呼び出すことによって作成されます。チャネルが関連ソケットを必要としている場合は、この操作の副作用としてソケットが作成されます。
SelectorProvider
クラスの代替定義またはインスタンスをプラグインします。ただし、この機能は、すべての開発者を対象とした機能ではありません。これは、非常に高い性能が要求される場合に、オペレーティングシステム固有の入出力多重化メカニズムを活用できるようにする、上級ユーザ向け機能です。
AbstractInterruptibleChannel
クラス、AbstractSelectableChannel
クラス、AbstractSelectionKey
クラス、AbstractSelector
クラスによって実行されます。カスタムセレクタプロバイダを定義する際、直接サブクラス化されるのは AbstractSelector
クラスと AbstractSelectionKey
クラスだけです。カスタムチャネルクラスは、このパッケージに定義されている適切な SelectableChannel
サブクラスを拡張する必要があります。
|
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.