JavaTM Platform
Standard Ed. 6

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 メソッドによって呼び出される register メソッドを宣言します。

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

コンストラクタの概要
protected AbstractSelector(SelectorProvider provider)
          このクラスの新しいインスタンスを初期化します。
 
メソッドの概要
protected  void begin()
          無期限にブロックされる入出力操作の開始をマークします。
protected  Set<SelectionKey> 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<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 メソッドをペアで呼び出す必要があります。


JavaTM Platform
Standard Ed. 6

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

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。