モジュール java.base
パッケージ java.nio.channels.spi

クラスSelectorProvider



  • public abstract class SelectorProvider
    extends Object
    セレクタおよび選択可能チャネルのサービス・プロバイダ・クラスです。

    セレクタ・プロバイダは、ゼロ引数コンストラクタを持ち、次の抽象メソッドを実装する、このクラスの具象サブクラスです。 指定されたJava仮想マシン呼出しは、providerメソッドによって返される、システム全体で単一のデフォルト・プロバイダ・インスタンスを保持します。 このメソッドの最初の呼出しは、次のデフォルト・プロバイダを検出します。

    システム全体のデフォルト・プロバイダは、DatagramChannelPipeSelectorServerSocketChannel、およびSocketChannelの各クラスの静的なopenメソッドによって使用されます。 これは、System.inheritedChannel()メソッドでも使用されます。 プログラム内でデフォルト以外のプロバイダを使用する場合は、そのプロバイダをインスタンス化したあと、このクラスに定義されているopenメソッドを直接呼び出します。

    このクラス内のすべてのメソッドは、複数の並行スレッドで安全に使用できます。

    導入されたバージョン:
    1.4
    • コンストラクタの詳細

      • SelectorProvider

        protected SelectorProvider​()
        このクラスの新しいインスタンスを初期化します。
        例外:
        SecurityException - セキュリティ・マネージャがインストールされており、それがRuntimePermission("selectorProvider")を拒否した場合
    • メソッドの詳細

      • provider

        public static SelectorProvider provider​()
        このJava仮想マシン呼出しのためのシステム全体のデフォルト・セレクタ・プロバイダを返します。

        このメソッドを最初に呼び出したとき、次の手順でデフォルト・プロバイダ・オブジェクトが検出されます。

        1. システム・プロパティjava.nio.channels.spi.SelectorProviderが定義されている場合、これが具象プロバイダ・クラスの完全修飾名と見なされます。 その後、クラスがロードされ、インスタンスが作成されます。

        2. システム・クラス・ローダーの認識するjarファイルにプロバイダ・クラスがインストールされていて、このjarファイルにリソース・ディレクトリMETA-INF/services内のプロバイダ構成ファイルjava.nio.channels.spi.SelectorProviderが含まれている場合、そのファイルに指定されている最初のクラス名が使用されます。 その後、クラスがロードされ、インスタンスが作成されます。

        3. 最後に、上記の手段で指定されたプロバイダが存在しない場合は、システムのデフォルト・プロバイダ・クラスのインスタンスが作成され、結果が返されます。

        次回以降の呼出しでも、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