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

クラスAbstractSelector

  • すべての実装されたインタフェース:
    Closeable, AutoCloseable

    public abstract class AbstractSelector
    extends Selector
    セレクタのベース実装クラスです。

    このクラスは、選択操作の割り込みの実装に必要な低レベルの機構をカプセル化します。 具象セレクタ・クラスは、無期限にブロックされる可能性のある入出力操作の呼出し前にbeginメソッドを、呼出し後にendメソッドをそれぞれ呼び出す必要があります。 endメソッドが必ず呼び出されるように、try ... finallyブロック内でこれらのメソッドを使用するようにしてください。

     try {
         begin();
         // Perform blocking I/O operation here
         ...
     } finally {
         end();
     }

    このクラスは、セレクタの取り消されたキー・セットを管理するメソッドや、チャネルのキー・セットからキーを削除するメソッドも定義します。また、実際にチャネルを登録するために選択可能チャネルのregisterメソッドによって呼び出される抽象registerメソッドを宣言します。

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

      • AbstractSelector

        protected AbstractSelector​(SelectorProvider provider)
        このクラスの新しいインスタンスを初期化します。
        パラメータ:
        provider - このセレクタの作成元プロバイダ
    • メソッドの詳細

      • close

        public final void close()
                         throws IOException
        このセレクタをクローズします。

        このセレクタがすでにクローズしている場合、このメソッドはただちに終了します。 それ以外の場合は、セレクタのクローズをマークしてから、クローズ操作を完了するためにimplCloseSelectorメソッドを呼び出します。

        定義:
        close、インタフェース: AutoCloseable
        定義:
        close、インタフェース: Closeable
        定義:
        close、クラス: Selector
        例外:
        IOException - 入出力エラーが発生した場合
      • implCloseSelector

        protected abstract void implCloseSelector()
                                           throws IOException
        このセレクタをクローズします。

        このメソッドは、セレクタをクローズする実際の処理を実行するためにcloseメソッドによって呼び出されます。 このメソッドは、セレクタがまだクローズされておらず、今後呼び出される可能性がない場合に限り呼び出されます。

        このメソッドの実装は、このセレクタに対する選択操作でブロックされているほかのスレッドを、wakeupメソッドを呼び出した場合のようにただちに終了する必要があります。

        例外:
        IOException - セレクタのクローズ中に入出力エラーが発生した場合
      • provider

        public final SelectorProvider provider()
        このチャネルの作成元プロバイダを返します。
        定義:
        provider、クラス: Selector
        戻り値:
        このチャネルの作成元プロバイダ
      • cancelledKeys

        protected final Set<SelectionKey> cancelledKeys()
        このセレクタの取り消されたキー・セットを取得します。

        このセットは、同期化されている場合に限り使用可能です。

        戻り値:
        取り消されたキー・セット
      • register

        protected abstract SelectionKey register​(AbstractSelectableChannel ch,
                                                 int ops,
                                                 Object att)
        このセレクタに指定されたチャネルを登録します。

        このメソッドは、このセレクタに実際にチャネルを登録するために、チャネルのregisterメソッドによって呼び出されます。

        パラメータ:
        ch - 登録されるチャネル
        ops - 有効な初期対象セット
        att - 結果として得られるキーの初期添付
        戻り値:
        このセレクタに指定されたチャネルが登録されていることを示す新しいキー
      • deregister

        protected final void deregister​(AbstractSelectionKey key)
        チャネルのキー・セットから指定されたキーを削除します。

        セレクタは、登録解除するチャネルごとにこのメソッドを呼び出す必要があります。

        パラメータ:
        key - 削除される選択キー
      • begin

        protected final void begin()
        無期限にブロックされる入出力操作の開始をマークします。

        このセレクタの割込みを実装するには、に示したとおり、try ... finallyブロックを使ってこのメソッドとendメソッドをペアで呼び出す必要があります。

        このメソッドを呼び出すと、セレクタに対する入出力操作でブロックされているスレッドのinterruptメソッドが呼び出された場合に、セレクタのwakeupメソッドが呼び出されます。

      • end

        protected final void end()
        無期限にブロックされる入出力操作の終了をマークします。

        このセレクタの割込みを実装するには、に示したとおり、try ... finallyブロックを使ってこのメソッドとbeginメソッドをペアで呼び出す必要があります。