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