クラスSelectorProvider

java.lang.Object
java.nio.channels.spi.SelectorProvider

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

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

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

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

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

    コンストラクタ
    修飾子
    コンストラクタ
    説明
    protected
    このクラスの新しいインスタンスを初期化します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    Java仮想マシンを作成したエンティティから継承されたチャネルを返します。
    データグラム・チャネルをオープンします。
    データグラム・チャネルをオープンします。
    abstract Pipe
    パイプをオープンします。
    セレクタをオープンします。
    サーバー・ソケット・チャネルをオープンします。
    サーバー・ソケット・チャネルをオープンします。
    abstract SocketChannel
    ソケット・チャネルをオープンします。
    ソケット・チャネルをオープンします。
    このJava仮想マシン呼出しのためのシステム全体のデフォルト・セレクタ・プロバイダを返します。

    クラスオブジェクトで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    修飾子と型
    メソッド
    説明
    protected Object
    このオブジェクトのコピーを作成して、返します。
    boolean
    このオブジェクトと他のオブジェクトが等しいかどうかを示します。
    protected void
    削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
    最終決定は非推奨であり、将来のリリースで削除される可能性があります。
    final Class<?>
    このObjectの実行時クラスを返します。
    int
    このオブジェクトに対するハッシュ・コード値を返します。
    final void
    このオブジェクトのモニターで待機中のスレッドを1つ再開します。
    final void
    このオブジェクトのモニターで待機中のすべてのスレッドを再開します。
    オブジェクトの文字列表現を返します。
    final void
    現在のスレッドが目覚めるまで待機します。通常、notifiedまたはinterruptedです。
    final void
    wait(long timeoutMillis)
    現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
    final void
    wait(long timeoutMillis, int nanos)
    現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
  • コンストラクタの詳細

    • SelectorProvider

      protected SelectorProvider()
      このクラスの新しいインスタンスを初期化します。
  • メソッドの詳細

    • provider

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

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

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

      2. システム・クラス・ローダーに表示されるjarファイルにプロバイダ・クラスがインストールされており、そのjarファイルにリソース・ディレクトリMETA-INF/servicesjava.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が返されます。 データグラム・チャネルは、少なくとも最初はブロック・モードであり、特定のソケット・アドレスにバインドされています。

      継承されたチャネルが「Unixドメイン」ソケット用である場合、返されるChannelタイプは、データグラム指向ソケットがサポートされていないことを除き、前述の「インターネット・プロトコル」ソケットの場合と同じです。

      前述の2タイプのソケットに加えて、このメソッドは将来的にほかの型を返す可能性があります。

      このメソッドの初回呼出し時には、チャネルが作成され、それが返されます。 このメソッドの後続呼出し時には、その同じチャネルが返されます。

      実装要件:
      このメソッドのデフォルト実装はnullを返します。
      戻り値:
      継承されたチャネル(存在する場合)、それ以外の場合はnull
      スロー:
      IOException - 入出力エラーが発生した場合
      導入されたバージョン:
      1.5
    • openSocketChannel

      public SocketChannel openSocketChannel(ProtocolFamily family) throws IOException
      ソケット・チャネルをオープンします。
      実装要件:
      このメソッドのデフォルト実装では、最初に指定されたプロトコルfamilynullでないことを確認してから、UnsupportedOperationExceptionをスローします。
      パラメータ:
      family - プロトコル・ファミリ
      戻り値:
      新しいチャネル
      スロー:
      UnsupportedOperationException - 指定されたプロトコル・ファミリがサポートされていない場合
      IOException - 入出力エラーが発生した場合
      導入されたバージョン:
      15
    • openServerSocketChannel

      public ServerSocketChannel openServerSocketChannel(ProtocolFamily family) throws IOException
      サーバー・ソケット・チャネルをオープンします。
      実装要件:
      このメソッドのデフォルト実装では、最初に指定されたプロトコルfamilynullでないことを確認してから、UnsupportedOperationExceptionをスローします。
      パラメータ:
      family - プロトコル・ファミリ
      戻り値:
      新しいチャネル
      スロー:
      UnsupportedOperationException - 指定されたプロトコル・ファミリがサポートされていない場合
      IOException - 入出力エラーが発生した場合
      導入されたバージョン:
      15