public abstract class SelectorProvider extends Object
セレクタ・プロバイダは、ゼロ引数コンストラクタを持ち、次の抽象メソッドを実装する、このクラスの具象サブクラスです。指定されたJava仮想マシン呼出しは、provider
メソッドによって返される、システム全体で単一のデフォルト・プロバイダ・インスタンスを保持します。このメソッドの最初の呼出しは、次のデフォルト・プロバイダを検出します。
システム全体のデフォルト・プロバイダは、DatagramChannel
、Pipe
、Selector
、ServerSocketChannel
、およびSocketChannel
の各クラスの静的なopenメソッドによって使用されます。これは、System.inheritedChannel()
メソッドでも使用されます。プログラム内でデフォルト以外のプロバイダを使用する場合は、そのプロバイダをインスタンス化したあと、このクラスに定義されているopenメソッドを直接呼び出します。
このクラス内のすべてのメソッドは、複数の並行スレッドで安全に使用できます。
修飾子 | コンストラクタと説明 |
---|---|
protected |
SelectorProvider()
このクラスの新しいインスタンスを初期化します。
|
修飾子と型 | メソッドと説明 |
---|---|
Channel |
inheritedChannel()
Java仮想マシンを作成したエンティティから継承されたチャネルを返します。
|
abstract DatagramChannel |
openDatagramChannel()
データグラム・チャネルをオープンします。
|
abstract DatagramChannel |
openDatagramChannel(ProtocolFamily family)
データグラム・チャネルをオープンします。
|
abstract Pipe |
openPipe()
パイプをオープンします。
|
abstract AbstractSelector |
openSelector()
セレクタをオープンします。
|
abstract ServerSocketChannel |
openServerSocketChannel()
サーバー・ソケット・チャネルをオープンします。
|
abstract SocketChannel |
openSocketChannel()
ソケット・チャネルをオープンします。
|
static SelectorProvider |
provider()
このJava仮想マシン呼出しのためのシステム全体のデフォルト・セレクタ・プロバイダを返します。
|
protected SelectorProvider()
SecurityException
- セキュリティ・マネージャがインストールされており、それがRuntimePermission
("selectorProvider")を拒否した場合public static SelectorProvider provider()
このメソッドを最初に呼び出したとき、次の手順でデフォルト・プロバイダ・オブジェクトが検出されます。
システム・プロパティjava.nio.channels.spi.SelectorProviderが定義されている場合、これが具象プロバイダ・クラスの完全修飾名と見なされます。その後、クラスがロードされ、インスタンスが作成されます。
システム・クラス・ローダーの認識するjarファイルにプロバイダ・クラスがインストールされていて、このjarファイルにリソース・ディレクトリMETA-INF/services内のプロバイダ構成ファイルjava.nio.channels.spi.SelectorProviderが含まれている場合、そのファイルに指定されている最初のクラス名が使用されます。その後、クラスがロードされ、インスタンスが作成されます。
最後に、上記の手段で指定されたプロバイダが存在しない場合は、システムのデフォルト・プロバイダ・クラスのインスタンスが作成され、結果が返されます。
次回以降の呼出しでも、1回目の呼出し時に返されたプロバイダが返されます。
public abstract DatagramChannel openDatagramChannel() throws IOException
IOException
- 入出力エラーが発生した場合public abstract DatagramChannel openDatagramChannel(ProtocolFamily family) throws IOException
family
- プロトコル・ファミリUnsupportedOperationException
- 指定されたプロトコル・ファミリがサポートされていない場合IOException
- 入出力エラーが発生した場合public abstract Pipe openPipe() throws IOException
IOException
- 入出力エラーが発生した場合public abstract AbstractSelector openSelector() throws IOException
IOException
- 入出力エラーが発生した場合public abstract ServerSocketChannel openServerSocketChannel() throws IOException
IOException
- 入出力エラーが発生した場合public abstract SocketChannel openSocketChannel() throws IOException
IOException
- 入出力エラーが発生した場合public Channel inheritedChannel() throws IOException
Java仮想マシンなど、多くのオペレーティング・システムのプロセスを起動する際に、そのプロセスを作成したエンティティからチャネルを継承させることができます。ただし、その方法はシステムに依存します。チャネルの接続先として使用可能なエンティティについても同様です。たとえば、UNIXシステムの場合、ある関連ネットワーク・ポート上で要求が受信されると、インターネット・サービス・デーモン(inetd)経由でその要求を処理するプログラムが起動されます。この例の場合、起動されたプロセスは、ネットワーク・ソケットを表すチャネルを継承します。
継承されたチャネルがネットワーク・ソケットを表現している場合、このメソッドから返されるChannel
の型は、次の手順で決定されます。
継承されたチャネルがストリーム指向の接続済みソケットを表現している場合、SocketChannel
が返されます。ソケット・チャネルは、少なくとも最初はブロック・モードであり、特定のソケット・アドレスにバインドされており、特定のピアに接続されています。
継承されたチャネルがストリーム指向の待機中のソケットを表現している場合、ServerSocketChannel
が返されます。サーバー・ソケット・チャネルは、少なくとも最初はブロック・モードであり、特定のソケット・アドレスにバインドされています。
継承されたチャネルがデータグラム指向のソケットを表現している場合、DatagramChannel
が返されます。データグラム・チャネルは、少なくとも最初はブロック・モードであり、特定のソケット・アドレスにバインドされています。
このメソッドは、ここで説明したネットワーク指向のチャネルに加え、将来的にほかの種類のチャネルも返すようになる予定です。
このメソッドの初回呼出し時には、チャネルが作成され、それが返されます。このメソッドの後続呼出し時には、その同じチャネルが返されます。
IOException
- 入出力エラーが発生した場合SecurityException
- セキュリティ・マネージャがインストールされており、それがRuntimePermission
("inheritedChannel")を拒否した場合 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.