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, 2013, Oracle and/or its affiliates. All rights reserved.