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

クラスAbstractSelectableChannel

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

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

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

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

    • 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 - 入出力エラーが発生した場合