- java.lang.Object
- 
- java.nio.channels.SelectionKey
 
- 
- 直系の既知のサブクラス:
- AbstractSelectionKey
 
 public abstract class SelectionKey extends Object SelectableChannelがSelectorに登録されていることを示すトークンです。チャネルをセレクタに登録するたびに、選択キーが作成されます。 このキーは、 cancelメソッドの呼び出しや、チャネルまたはセレクタのクローズによって取り消されるまで有効です。 取り消されたキーがただちにセレクタから削除されるわけではありません。取り消されたキーは、次の選択操作中に、削除のためにセレクタの取り消されたキー・セットに追加されます。 キーの有効性は、isValidメソッドを呼び出すことによってテストできます。選択キーには、整数値で表された2つの操作セットがあります。 操作セットのビットは、キーのチャネルによってサポートされている選択可能な操作のカテゴリを示します。 - 対象セットは、次回セレクタの選択メソッドの1つを呼び出したときに実行可能性をテストする操作カテゴリを決定します。 対象セットは、キーの作成時に初期化され、指定された値になります。この値は、後で - interestOps(int)メソッドを使って変更できます。
- 実行可能セットは、キーのセレクタによって検出された実行可能なキーのチャネルの操作カテゴリを識別します。 実行可能セットは、キーの作成時に初期化され、ゼロになります。この値は、その後の選択操作中にセレクタで更新できますが、直接更新することはできません。 
 選択キーの実行可能セットは、そのチャネルがある操作カテゴリを実行できる状態になっていることを示します。 ただし、これは単なるヒントであって、スレッドがブロックされることなくそのカテゴリの操作を実行できることを保証するわけではありません。 通常、実行可能セットは、選択操作完了直後は正確ですが、外部イベントや対応するチャネル上で呼び出される入出力操作によって不正確になる可能性があります。 このクラスは既知のすべての操作セット・ビットを定義しますが、どのビットが指定されたチャネルによってサポートされるかは、正確にはチャネルの種類によって異なります。 SelectableChannelの各サブクラスはvalidOps()メソッドを定義し、このメソッドはチャネルによってサポートされる操作のみを示すセットを返します。 キーのチャネルによってサポートされていない操作セット・ビットを設定またはテストしようとすると、適切な実行時例外がスローされます。多くの場合、アプリケーション固有のデータを選択キーに関連付ける必要があります。たとえば、あるプロトコルを実装するために、その上位プロトコルの状態を示し、実行可能通知を処理するオブジェクトがこれに該当します。 このため、選択キーは、単一の任意オブジェクトをキーに添付する機能をサポートしています。 attachメソッドでオブジェクトを添付した後、attachmentメソッドでこのオブジェクトを取得できます。選択キーは複数の並行スレッドで安全に使用できます。 選択操作では、操作開始時点で現在だった関心セット値が常に使用されます。 - 導入されたバージョン:
- 1.4
- 関連項目:
- SelectableChannel、- Selector
 
- 
- 
フィールドのサマリーフィールド 修飾子と型 フィールド 説明 static intOP_ACCEPTソケット受け付け操作用の操作セット・ビットです。static intOP_CONNECTソケット接続操作用の操作セット・ビットです。static intOP_READ読込み操作用の操作セット・ビットです。static intOP_WRITE書込み操作用の操作セット・ビットです。
 - 
コンストラクタのサマリーコンストラクタ 修飾子 コンストラクタ 説明 protectedSelectionKey()このクラスのインスタンスを構築します。
 - 
メソッドのサマリー修飾子と型 メソッド 説明 Objectattach(Object ob)このキーに指定されたオブジェクトを添付します。Objectattachment()現在の添付オブジェクトを取得します。abstract voidcancel()このキーのセレクタへの登録を解除することを要求します。abstract SelectableChannelchannel()作成されたこのキーのチャネルを返します。abstract intinterestOps()このキーの対象セットを取得します。abstract SelectionKeyinterestOps(int ops)このキーの対象セットを指定された値にします。intinterestOpsAnd(int ops)この重要な関心セットは、既存の関心セットと指定された値について、ビット単位の共通部分になる(and)に原子的に設定されます。intinterestOpsOr(int ops)この重要な関心事項は、既存の関心セットと指定された値のビット単位のユニオン(or)に設定されます。booleanisAcceptable()このキーのチャネルが新しいソケット接続を受け付けられる状態になっているかどうかをテストします。booleanisConnectable()このキーのチャネルがソケット接続操作を正しく完了したか失敗したかをテストします。booleanisReadable()このキーのチャネルが読込み可能な状態になっているかどうかをテストします。abstract booleanisValid()このキーが有効であるかどうかを判断します。booleanisWritable()このキーのチャネルが書込み可能な状態になっているかどうかをテストします。abstract intreadyOps()このキーの実行可能操作セットを取得します。abstract Selectorselector()作成されたこのキーのセレクタを返します。
 
- 
- 
- 
フィールドの詳細- 
OP_READpublic static final int OP_READ 読込み操作用の操作セット・ビットです。選択操作を始めるとき、選択キーの対象セットに OP_READが含まれているとします。 対応するチャネルが読込み可能であること、ストリームの終わりに達したこと、さらに読み込みのためにリモートでシャットダウンしたこと、またはエラーが保留中であることがセレクタによって検出された場合、すぐにキー操作セットにOP_READが追加されます。- 関連項目:
- 定数フィールド値
 
 - 
OP_WRITEpublic static final int OP_WRITE 書込み操作用の操作セット・ビットです。選択操作を始めるとき、選択キーの対象セットに OP_WRITEが含まれているとします。 セレクタによって対応するチャネルが書込み準備が整っていることが検出された場合、さらに書込みを実行するためにリモートで停止されたか、またはエラーが発生した場合は、キーが準備完了のキーに追加されます。- 関連項目:
- 定数フィールド値
 
 - 
OP_CONNECTpublic static final int OP_CONNECT ソケット接続操作用の操作セット・ビットです。選択操作を始めるとき、選択キーの対象セットに OP_CONNECTが含まれているとします。 セレクタによって、対応するソケット・チャネルが接続順序を完了できることが検出されたか、またはエラーが保留中であることが検出された場合は、キーが準備完了のキーになるようにOP_CONNECTが追加されます。- 関連項目:
- 定数フィールド値
 
 
- 
 - 
メソッドの詳細- 
channelpublic abstract SelectableChannel channel() 作成されたこのキーのチャネルを返します。 このメソッドは、キーが取り消されたあともチャネルを返します。- 戻り値:
- このキーのチャネル
 
 - 
selectorpublic abstract Selector selector() 作成されたこのキーのセレクタを返します。 このメソッドは、キーが取り消されたあともセレクタを返します。- 戻り値:
- このキーのセレクタ
 
 - 
isValidpublic abstract boolean isValid() このキーが有効であるかどうかを判断します。キーは、作成された時点から、取り消されるか、チャネルまたはセレクタがクローズするまで有効です。 - 戻り値:
- このキーが有効である場合にかぎりtrue
 
 - 
cancelpublic abstract void cancel() このキーのセレクタへの登録を解除することを要求します。 終了時、キーは無効になり、セレクタの取り消されたキー・セットに追加されます。 このキーは、次の選択操作時に、すべてのセレクタのキー・セットから削除されます。このキーがすでに取り消されている場合は、このメソッドを呼び出しても何も起こりません。 いったん取り消されたキーは以後永久に無効です。 このメソッドはいつでも呼び出すことができます。 セレクタの取り消されたキー・セットとの同期がとられるため、同じセレクタを使用する取消し操作または選択操作中に並行して呼び出されると、一時的にブロックされます。 
 - 
interestOpspublic abstract int interestOps() このキーの対象セットを取得します。返されるセットには、このキーのチャネルにとって有効な操作ビットだけが含まれます。 - 戻り値:
- このキーの対象セット
- 例外:
- CancelledKeyException- このキーが取り消された場合
 
 - 
interestOpspublic abstract SelectionKey interestOps(int ops) このキーの対象セットを指定された値にします。このメソッドはいつでも呼び出すことができます。 選択操作の進行中にこのメソッドが呼び出された場合、その操作には影響しません。重要な目的セットへの変更は、次の選択操作によって確認されます。 - パラメータ:
- ops- 新しい対象セット
- 戻り値:
- この選択キー
- 例外:
- IllegalArgumentException- セット内のビットがこのキーのチャネルでサポートされる操作に対応していない場合(- (ops & ~channel().validOps()) != 0の場合)
- CancelledKeyException- このキーが取り消された場合
 
 - 
interestOpsOrpublic int interestOpsOr(int ops) この重要な関心事項は、既存の関心セットと指定された値のビット単位のユニオン(or)に設定されます。 このメソッドは、このメソッドまたはinterestOpsAnd(int)に対する他の同時コールに関して原子的であることが保証されます。このメソッドはいつでも呼び出すことができます。 選択操作の進行中にこのメソッドが呼び出された場合、その操作には影響しません。重要な目的セットへの変更は、次の選択操作によって確認されます。 - 実装要件:
- デフォルトの実装はこのキーを同期し、interestOps()とinterestOps(int)を起動して、この重要な関心セットを取得および設定します。
- パラメータ:
- ops- 適用する対象セット
- 戻り値:
- 前回の関心セット
- 例外:
- IllegalArgumentException- セット内のビットがこのキーのチャネルでサポートされる操作に対応していない場合(- (ops & ~channel().validOps()) != 0の場合)
- CancelledKeyException- このキーが取り消された場合
- 導入されたバージョン:
- 11
 
 - 
interestOpsAndpublic int interestOpsAnd(int ops) この重要な関心セットは、既存の関心セットと指定された値について、ビット単位の共通部分になる(and)に原子的に設定されます。 このメソッドは、このメソッドまたはinterestOpsOr(int)に対する他の同時コールに関して原子的であることが保証されます。このメソッドはいつでも呼び出すことができます。 選択操作の進行中にこのメソッドが呼び出された場合、その操作には影響しません。重要な目的セットへの変更は、次の選択操作によって確認されます。 - APIの注:
- interestOps(int)メソッドと- interestOpsOr(int)メソッドとは異なり、このメソッドは、このキー・チャネルでサポートされている操作に対応していない関心セットのビットを使って呼び出されたときに- IllegalArgumentExceptionをスローしません。 これは、ビット単位の補足値を使用して、対象セットの操作ビットをクリアできるようにするために使用されます。たとえば、- interestOpsAnd(~SelectionKey.OP_READ)は、他のビットに影響を与えずに、対象セットから- OP_READを削除します。
- 実装要件:
- デフォルトの実装はこのキーを同期し、interestOps()とinterestOps(int)を起動して、この重要な関心セットを取得および設定します。
- パラメータ:
- ops- 適用する対象セット
- 戻り値:
- 前回の関心セット
- 例外:
- CancelledKeyException- このキーが取り消された場合
- 導入されたバージョン:
- 11
 
 - 
readyOpspublic abstract int readyOps() このキーの実行可能操作セットを取得します。返されるセットには、このキーのチャネルにとって有効な操作ビットだけが含まれます。 - 戻り値:
- このキーの実行可能操作セット
- 例外:
- CancelledKeyException- このキーが取り消された場合
 
 - 
isReadablepublic final boolean isReadable() このキーのチャネルが読込み可能な状態になっているかどうかをテストします。このメソッドを k.isReadable()の形式で呼び出した場合、次の式と同じ結果が得られます。k.readyOps() & OP_READ != 0このキーのチャネルが読込み操作をサポートしない場合、このメソッドは常に falseを返します。- 戻り値:
- readyOps() & OP_READの値がゼロ以外の場合にかぎり- true
- 例外:
- CancelledKeyException- このキーが取り消された場合
 
 - 
isWritablepublic final boolean isWritable() このキーのチャネルが書込み可能な状態になっているかどうかをテストします。このメソッドを k.isWritable()の形式で呼び出した場合、次の式と同じ結果が得られます。k.readyOps() & OP_WRITE != 0このキーのチャネルが書込み操作をサポートしない場合、このメソッドは常に falseを返します。- 戻り値:
- readyOps() & OP_WRITEの値がゼロ以外の場合にかぎり- true
- 例外:
- CancelledKeyException- このキーが取り消された場合
 
 - 
isConnectablepublic final boolean isConnectable() このキーのチャネルがソケット接続操作を正しく完了したか失敗したかをテストします。このメソッドを k.isConnectable()の形式で呼び出した場合、次の式と同じ結果が得られます。k.readyOps() & OP_CONNECT != 0このキーのチャネルがソケット接続操作をサポートしない場合、このメソッドは常に falseを返します。- 戻り値:
- readyOps() & OP_CONNECTの値がゼロ以外の場合にかぎり- true
- 例外:
- CancelledKeyException- このキーが取り消された場合
 
 - 
isAcceptablepublic final boolean isAcceptable() このキーのチャネルが新しいソケット接続を受け付けられる状態になっているかどうかをテストします。このメソッドを k.isAcceptable()の形式で呼び出した場合、次の式と同じ結果が得られます。k.readyOps() & OP_ACCEPT != 0このキーのチャネルがソケット受け付け操作をサポートしない場合、このメソッドは常に falseを返します。- 戻り値:
- readyOps() & OP_ACCEPTの値がゼロ以外の場合にかぎり- true
- 例外:
- CancelledKeyException- このキーが取り消された場合
 
 - 
attachpublic final Object attach(Object ob) このキーに指定されたオブジェクトを添付します。添付されたオブジェクトは、後で attachmentメソッドを使って取得できます。 同時に複数のオブジェクトを添付することはできません。このメソッドを呼び出すと、それ以前に添付されたオブジェクトは破棄されます。nullを添付すると、現在の添付オブジェクトが破棄されます。- パラメータ:
- ob- 添付されるオブジェクト。- nullの場合もある
- 戻り値:
- 以前に添付されたオブジェクトがある場合はそのオブジェクト、それ以外の場合はnull
 
 - 
attachmentpublic final Object attachment() 現在の添付オブジェクトを取得します。- 戻り値:
- このキーに現在添付されているオブジェクト。添付オブジェクトがない場合はnull
 
 
- 
 
-