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