JavaTM 2
Platform
Std. Ed. v1.4.0

java.nio.channels.spi
クラス AbstractSelectableChannel

java.lang.Object
  |
  +--java.nio.channels.spi.AbstractInterruptibleChannel
        |
        +--java.nio.channels.SelectableChannel
              |
              +--java.nio.channels.spi.AbstractSelectableChannel
すべての実装インタフェース:
Channel, InterruptibleChannel
直系の既知のサブクラス:
DatagramChannel, Pipe.SinkChannel, Pipe.SourceChannel, ServerSocketChannel, SocketChannel

public abstract class AbstractSelectableChannel
extends SelectableChannel

選択可能チャネルのベース実装クラスです。

このクラスは、チャネルの登録、登録解除、クローズの処理を行うメソッドを定義します。このクラスは、現在ブロックモードになっているこのチャネルと、現在の選択キーセットを管理します。また、SelectableChannel 指定された実装に必要なあらゆる同期処理を実行します。このクラスに定義されている abstract protected メソッドの実装は、同じ操作で使用されるその他のスレッドと必ずしも同期していません。

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

コンストラクタの概要
protected AbstractSelectableChannel(SelectorProvider provider)
          このクラスの新しいインスタンスを初期化します。
 
メソッドの概要
 Object blockingLock()
          configureBlocking メソッドと register メソッドが同期するオブジェクトを返します。
 SelectableChannel configureBlocking(boolean block)
          このチャネルのブロックモードを調整します。
protected  void implCloseChannel()
          このチャネルをクローズします。
protected abstract  void implCloseSelectableChannel()
          この選択可能チャネルをクローズします。
protected abstract  void implConfigureBlocking(boolean block)
          このチャネルのブロックモードを調整します。
 boolean isBlocking()
          このチャネル上の個々の入出力操作が前の入出力操作が完了するまでブロックされるかどうかを判断します。
 boolean isRegistered()
          現在このチャネルがセレクタに登録されているかどうかを判断します。
 SelectionKey keyFor(Selector sel)
          チャネルが指定されたセレクタに登録されていることを示すキーを取得します。
 SelectorProvider provider()
          このチャネルの作成元プロバイダを返します。
 SelectionKey register(Selector sel, int ops, Object att)
          このチャネルを指定されたセレクタに登録し、選択キーを返します。
 
クラス java.nio.channels.SelectableChannel から継承したメソッド
register, validOps
 
クラス java.nio.channels.spi.AbstractInterruptibleChannel から継承したメソッド
begin, close, end, isOpen
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
インタフェース java.nio.channels.Channel から継承したメソッド
close, isOpen
 

コンストラクタの詳細

AbstractSelectableChannel

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

メソッドの詳細

provider

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

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

isRegistered

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

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

定義:
クラス SelectableChannel 内の isRegistered
戻り値:
このチャネルが登録されている場合にかぎり true

keyFor

public final SelectionKey keyFor(Selector sel)
クラス SelectableChannel の記述:
チャネルが指定されたセレクタに登録されていることを示すキーを取得します。

定義:
クラス SelectableChannel 内の keyFor
戻り値:
前回このチャネルを指定されたセレクタに登録したとき返されたキー。現在このチャネルが指定されたセレクタに登録されていない場合は null

register

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

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

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

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

定義:
クラス SelectableChannel 内の register
パラメータ:
sel - このチャネルの登録先セレクタ
ops - 生成されたキーの対象セット
att - 生成されたキーの添付。null の場合もある
戻り値:
このチャネルが指定されたセレクタに登録されていることを示すキー
例外:
ClosedChannelException - このチャネルがクローズしている場合

implCloseChannel

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

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

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

implCloseSelectableChannel

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

このメソッドは、実際にチャネルをクローズするため、close メソッドによって呼び出されます。このメソッドは、チャネルがまだクローズしておらず、今後呼び出される可能性がない場合にのみ呼び出されます。

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

IOException

isBlocking

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

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

定義:
クラス SelectableChannel 内の isBlocking
戻り値:
このチャネルがブロックモードである場合にかぎり true

blockingLock

public final Object blockingLock()
クラス SelectableChannel の記述:
configureBlocking メソッドと register メソッドが同期するオブジェクトを返します。この機能は、特定のブロックモードを短時間保持する必要があるアダプタを実装する場合に便利です。

定義:
クラス SelectableChannel 内の blockingLock
戻り値:
ブロックモードのロックオブジェクト

configureBlocking

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

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

定義:
クラス SelectableChannel 内の configureBlocking
パラメータ:
block - このチャネルがブロックモードになる場合は true、非ブロックモードになる場合は false
戻り値:
この選択可能チャネル
例外:
IOException - 入出力エラーが発生した場合

implConfigureBlocking

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

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

例外:
IOException - 入出力エラーが発生した場合

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.