参照: 説明
インタフェース | 説明 |
---|---|
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
可変長のバイト・シーケンスが含まれているエンティティに接続された ByteChannel
AsynchronousChannel
非同期入出力操作をサポートする。 AsynchronousByteChannel
非同期でバイトの読取りと書込みを行う NetworkChannel
ネットワーク・ソケットへのチャネル MulticastChannel
IP (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.