- java.lang.Object
-
- java.nio.channels.spi.AbstractInterruptibleChannel
-
- java.nio.channels.SelectableChannel
-
- 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
の仕様を実装するのに必要な同期処理をすべて実行します。 このクラスに定義されているabstract protectedメソッドの実装では、同じ操作を使用するほかのスレッドとの同期処理を行う必要はありません。- 導入されたバージョン:
- 1.4
-
-
コンストラクタのサマリー
コンストラクタ 修飾子 コンストラクタ 説明 protected
AbstractSelectableChannel(SelectorProvider provider)
このクラスの新しいインスタンスを初期化します。
-
メソッドのサマリー
すべてのメソッド インスタンス・メソッド 抽象メソッド 具象メソッド 修飾子と型 メソッド 説明 SelectableChannel
configureBlocking(boolean block)
このチャネルのブロック・モードを調整します。protected void
implCloseChannel()
現在のチャネルをクローズします。protected abstract void
implCloseSelectableChannel()
この選択可能チャネルをクローズします。protected abstract void
implConfigureBlocking(boolean block)
このチャネルのブロック・モードを調整します。SelectorProvider
provider()
このチャネルの作成元プロバイダを返します。SelectionKey
register(Selector sel, int ops, Object att)
このチャネルを指定されたセレクタに登録し、選択キーを返します。-
クラス java.nio.channels.SelectableChannelで宣言されたメソッド
blockingLock, isBlocking, isRegistered, keyFor, register, validOps
-
クラス java.nio.channels.spi.AbstractInterruptibleChannelで宣言されたメソッド
begin, close, end
-
-
-
-
コンストラクタの詳細
-
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
- 入出力エラーが発生した場合
-
-