クラスAbstractSelectableChannel

すべての実装されたインタフェース:
Closeable, AutoCloseable, Channel, InterruptibleChannel
直系の既知のサブクラス:
DatagramChannel, Pipe.SinkChannel, Pipe.SourceChannel, SctpChannel, SctpMultiChannel, SctpServerChannel, ServerSocketChannel, SocketChannel

public abstract class AbstractSelectableChannel extends SelectableChannel
選択可能チャネルのベース実装クラスです。

このクラスは、チャネルの登録、登録解除、クローズの処理を行うメソッドを定義します。 このクラスは、このチャネルの現在のブロック・モードと、現在の選択キー・セットを管理します。 また、SelectableChannelの仕様を実装するのに必要な同期処理をすべて実行します。 このクラスで定義された保護された抽象メソッドの実装は、同じ操作に関与する可能性のある他のスレッドと同期する必要はありません。

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

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

    修飾子と型
    メソッド
    説明
    final Object
    configureBlockingおよびregisterメソッドが同期するオブジェクトを取得します。
    configureBlocking(boolean block)
    このチャネルのブロック・モードを調整します。
    protected final void
    現在のチャネルをクローズします。
    protected abstract void
    この選択可能チャネルをクローズします。
    protected abstract void
    implConfigureBlocking(boolean block)
    このチャネルのブロック・モードを調整します。
    final boolean
    このチャネル上の個々の入出力操作が前の入出力操作が完了するまでブロックされるかどうかを判断します。
    final boolean
    現在このチャネルがセレクタに登録されているかどうかを判断します。
    チャネルが指定されたセレクタに登録されていることを示すキーを取得します。
    このチャネルの作成元プロバイダを返します。
    register(Selector sel, int ops, Object att)
    このチャネルを指定されたセレクタに登録し、選択キーを返します。

    クラスで宣言されたメソッド SelectableChannel

    register, validOps
    修飾子と型
    メソッド
    説明
    register(Selector sel, int ops)
    このチャネルを指定されたセレクタに登録し、選択キーを返します。
    abstract int
    このチャネルのサポートされている操作を識別する操作セットを返します。

    クラスで宣言されたメソッド AbstractInterruptibleChannel

    begin, close, end, isOpen
    修飾子と型
    メソッド
    説明
    protected final void
    無期限にブロックされる入出力操作の開始をマークします。
    final void
    現在のチャネルをクローズします。
    protected final void
    end(boolean completed)
    無期限にブロックされる入出力操作の終了をマークします。
    final boolean
    現在のチャネルの状態がオープンであるかどうかを判断します。

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

    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であるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
  • コンストラクタの詳細

    • AbstractSelectableChannel

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

    • provider

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

      public final boolean isRegistered()
      クラスからコピーされた説明: SelectableChannel
      現在このチャネルがセレクタに登録されているかどうかを判断します。 新しく作成されたチャネルは登録されていません。

      キーの取り消しからチャネルの登録解除までの間に発生する必然的な遅延のため、キーをすべて取り消しても、しばらくの間チャネルの登録は解除されません。 チャネルをクローズしたときも同様です。

      定義:
      isRegistered、クラスSelectableChannel
      戻り値:
      このチャネルが登録されている場合のみ、true
    • keyFor

      public final SelectionKey keyFor(Selector sel)
      クラスからコピーされた説明: SelectableChannel
      チャネルが指定されたセレクタに登録されていることを示すキーを取得します。
      定義:
      keyFor、クラスSelectableChannel
      パラメータ:
      sel - セレクタ
      戻り値:
      このチャネルが最後に指定されたセレクタに登録されたときに返されるキー、またはこのチャネルが現在そのセレクタに登録されていない場合はnull
    • register

      public final SelectionKey register(Selector sel, int ops, Object att) throws ClosedChannelException
      このチャネルを指定されたセレクタに登録し、選択キーを返します。

      このメソッドは、最初にこのチャネルがオープンしていることと、指定された初期対象セットが有効であることを確認します。

      このチャネルが指定されたセレクタに登録されている場合、その対象セットが指定された値に設定され、登録を示す選択キーが返されます。

      それ以外の場合、このチャネルは指定されたセレクタにまだ登録されていないので、適切なロックを保持した状態でセレクタのregisterメソッドが呼び出されます。 結果として得られるキーは、返される前に、このチャネルのキー・セットに追加されます。

      定義:
      register、クラスSelectableChannel
      パラメータ:
      sel - このチャネルの登録先セレクタ
      ops - 結果として得られるキーの対象セット
      att - 結果のキーのアタッチメント。nullです
      戻り値:
      このチャネルが指定されたセレクタに登録されていることを示すキー
      スロー:
      ClosedSelectorException - セレクタがクローズしている場合
      IllegalBlockingModeException - このチャネルがブロック・モードの場合
      IllegalSelectorException - このチャネルの作成元プロバイダが指定されたセレクタの作成元プロバイダと違う場合
      CancelledKeyException - チャネルは指定されたセレクタに登録されているが、対応するキーがすでに取り消されている場合
      IllegalArgumentException - opsセットのビットがこのチャネルでサポートされる操作に対応していない場合、つまり、set & ~validOps() != 0の場合
      ClosedChannelException - このチャネルがクローズしている場合
    • implCloseChannel

      protected final void implCloseChannel() throws IOException
      現在のチャネルをクローズします。

      このメソッドは、AbstractInterruptibleChannelクラスで指定されており、closeメソッドによって呼び出されたあと、このチャネルを実際にクローズする処理を行うためにimplCloseSelectableChannelメソッドを呼び出します。 次に、このチャネルのキーをすべて取り消します。

      定義:
      implCloseChannel、クラスAbstractInterruptibleChannel
      スロー:
      IOException - チャネルのクローズ中に入出力エラーが発生した場合
    • implCloseSelectableChannel

      protected abstract void implCloseSelectableChannel() throws IOException
      この選択可能チャネルをクローズします。

      このメソッドは、チャネルをクローズする実際の処理を実行するためにcloseメソッドによって呼び出されます。 このメソッドは、チャネルがまだクローズしていない場合にのみ呼び出され、2回以上呼び出されることはありません。

      このメソッドの実装は、このチャネルに対する入出力操作の途中でブロックされるその他のスレッドを、例外をスローするか、通常の方法を使ってただちに終了させることになっています。

      スロー:
      IOException - 入出力エラーが発生した場合
    • isBlocking

      public final boolean isBlocking()
      クラスからコピーされた説明: SelectableChannel
      このチャネル上の個々の入出力操作が前の入出力操作が完了するまでブロックされるかどうかを判断します。 新しく作成されたチャネルは常にブロック・モードです。

      このチャネルがクローズしている場合、このメソッドの戻り値は特定されません。

      定義:
      isBlocking、クラスSelectableChannel
      戻り値:
      このチャネルがブロッキング・モードの場合にのみtrue
    • blockingLock

      public final Object blockingLock()
      クラスからコピーされた説明: SelectableChannel
      configureBlockingおよびregisterメソッドが同期するオブジェクトを取得します。 この機能は、特定のブロック・モードを短時間保持する必要があるアダプタを実装する場合に便利です。
      定義:
      blockingLock、クラスSelectableChannel
      戻り値:
      ブロック・モードのロック・オブジェクト
    • configureBlocking

      public final SelectableChannel configureBlocking(boolean block) throws IOException
      このチャネルのブロック・モードを調整します。

      指定されたブロック・モードが現在のブロック・モードと異なっている場合、このメソッドは、適切なロックを保持した状態でimplConfigureBlockingメソッドを呼び出してモードを変更します。

      定義:
      configureBlocking、クラスSelectableChannel
      パラメータ:
      block - trueの場合、このチャネルはブロック・モードになります。falseの場合、非ブロッキング・モードになります
      戻り値:
      この選択可能チャネル
      スロー:
      ClosedChannelException - このチャネルがクローズしている場合
      IOException - 入出力エラーが発生した場合
    • implConfigureBlocking

      protected abstract void implConfigureBlocking(boolean block) throws IOException
      このチャネルのブロック・モードを調整します。

      このメソッドは、ブロック・モードを変更する実際の処理を実行するためにconfigureBlockingメソッドによって呼び出されます。 このメソッドは、新しいモードが現在のモードと異なっている場合に限り呼び出されます。

      パラメータ:
      block - trueの場合、このチャネルはブロック・モードになります。falseの場合、非ブロッキング・モードになります
      スロー:
      IOException - 入出力エラーが発生した場合