JavaTM 2
Platform
Std. Ed. v1.4.0

java.nio.channels.spi
クラス AbstractSelector

java.lang.Object
  |
  +--java.nio.channels.Selector
        |
        +--java.nio.channels.spi.AbstractSelector

public abstract class AbstractSelector
extends Selector

セレクタのベース実装クラスです。

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

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

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

導入されたバージョン:
1.4

コンストラクタの概要
protected AbstractSelector(SelectorProvider provider)
          このクラスの新しいインスタンスを初期化します。
 
メソッドの概要
protected  void begin()
          無期限にブロックされる入出力操作の開始をマークします。
protected  Set cancelledKeys()
          このセレクタの取り消されたキーセットを取得します。
 void close()
          このセレクタをクローズします。
protected  void deregister(AbstractSelectionKey key)
          チャネルのキーセットから指定されたキーを削除します。
protected  void end()
          無期限にブロックされる入出力操作の終了をマークします。
protected abstract  void implCloseSelector()
          このセレクタをクローズします。
 boolean isOpen()
          このセレクタの状態がオープンであるかどうかを判断します。
 SelectorProvider provider()
          このチャネルの作成元プロバイダを返します。
protected abstract  SelectionKey register(AbstractSelectableChannel ch, int ops, Object att)
          このセレクタに指定されたチャネルを登録します。
 
クラス java.nio.channels.Selector から継承したメソッド
keys, open, select, select, selectedKeys, selectNow, wakeup
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

AbstractSelector

protected AbstractSelector(SelectorProvider provider)
このクラスの新しいインスタンスを初期化します。

メソッドの詳細

close

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

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

定義:
クラス Selector 内の close
例外:
IOException - 入出力エラーが発生した場合

implCloseSelector

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

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

このメソッドの実装は、このセレクタに対する選択操作の途中でブロックされるスレッドを、wakeup メソッドを呼び出した場合のようにただちに終了することになっています。

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

isOpen

public final boolean isOpen()
クラス Selector の記述:
このセレクタの状態がオープンであるかどうかを判断します。

定義:
クラス Selector 内の isOpen
戻り値:
このセレクタがオープンである場合にかぎり true

provider

public final SelectorProvider provider()
このチャネルの作成元プロバイダを返します。

定義:
クラス Selector 内の provider
戻り値:
このチャネルの作成元プロバイダ

cancelledKeys

protected final Set 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 ブロックを使って、連携する end メソッドも呼び出します。


JavaTM 2
Platform
Std. Ed. v1.4.0

バグの報告と機能のリクエスト
これ以外の API リファレンスおよび開発者用ドキュメントについては、 Java 2 SDK SE 開発者用ドキュメントを参照してください。 開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、 およびコード実例が含まれています。

Java、Java 2D、および JDBC は米国ならびにその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.