- すべての実装されたインタフェース:
Closeable,AutoCloseable,Channel,InterruptibleChannel
- 直系の既知のサブクラス:
DatagramChannel,Pipe.SinkChannel,Pipe.SourceChannel,SctpChannel,SctpMultiChannel,SctpServerChannel,ServerSocketChannel,SocketChannel
public abstract class AbstractSelectableChannel extends SelectableChannel
このクラスは、チャネルの登録、登録解除、クローズの処理を行うメソッドを定義します。 このクラスは、このチャネルの現在のブロック・モードと、現在の選択キー・セットを管理します。 また、SelectableChannelの仕様を実装するのに必要な同期処理をすべて実行します。 このクラスに定義されているabstract protectedメソッドの実装では、同じ操作を使用するほかのスレッドとの同期処理を行う必要はありません。
- 導入されたバージョン:
- 1.4
-
コンストラクタのサマリー
コンストラクタ 修飾子 コンストラクタ 説明 protectedAbstractSelectableChannel(SelectorProvider provider)このクラスの新しいインスタンスを初期化します。 -
メソッドのサマリー
修飾子と型 メソッド 説明 SelectableChannelconfigureBlocking(boolean block)このチャネルのブロック・モードを調整します。protected voidimplCloseChannel()現在のチャネルをクローズします。protected abstract voidimplCloseSelectableChannel()この選択可能チャネルをクローズします。protected abstract voidimplConfigureBlocking(boolean block)このチャネルのブロック・モードを調整します。SelectorProviderprovider()このチャネルの作成元プロバイダを返します。SelectionKeyregister(Selector sel, int ops, Object att)このチャネルを指定されたセレクタに登録し、選択キーを返します。クラス java.nio.channels.SelectableChannelで宣言されたメソッド
blockingLock, isBlocking, isRegistered, keyFor, register, validOps
-
コンストラクタの詳細
-
AbstractSelectableChannel
protected AbstractSelectableChannel(SelectorProvider provider)このクラスの新しいインスタンスを初期化します。- パラメータ:
provider- このチャネルの作成元プロバイダ
-
-
メソッドの詳細
-
provider
public final SelectorProvider provider()このチャネルの作成元プロバイダを返します。- 定義:
provider、クラス:SelectableChannel- 戻り値:
- このチャネルの作成元プロバイダ
-
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- 入出力エラーが発生した場合
-
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- 入出力エラーが発生した場合
-