선택 키

선택 키 (SelectionKey)

SelectableChannel이 Selector에 등록된 것을 나타내는 토큰이에요. 관심 연산 집합과 준비 연산 집합을 관리합니다.

출처: Java API Reference

본문

SelectionKeySelectableChannelSelector에 등록된 것을 나타내는 토큰이에요.

public abstract class SelectionKey extends Object

키는 채널이 셀렉터에 등록될 때마다 생성되고, cancel() 메서드로 취소되거나 채널·셀렉터가 닫힐 때까지 유효합니다. 취소해도 셀렉터에서 즉시 제거되지는 않고, 다음 선택 연산 때 취소된 키 집합으로 옮겨져 제거돼요.

선택 키는 두 개의 연산 집합을 정수 값으로 담아요.

  • interest set(관심 집합) — 다음 선택 연산에서 준비 상태가 검사될 연산 범주. interestOps(int)로 변경 가능해요.
  • ready set(준비 집합) — 셀렉터가 채널이 준비된 것으로 감지한 연산 범주. 직접 갱신할 수 없어요.
public static final int OP_READ
public static final int OP_WRITE
public static final int OP_CONNECT
public static final int OP_ACCEPT

이 클래스는 알려진 연산 집합 비트를 모두 정의합니다.

public abstract SelectableChannel channel()
public abstract Selector selector()
public abstract boolean isValid()
public abstract void cancel()
public abstract int interestOps()
public abstract int readyOps()
public final boolean isReadable()
public final boolean isWritable()
public final boolean isConnectable()
public final boolean isAcceptable()

준비 집합이 어떤 연산에 채널이 준비됐다고 알려주는 건 힌트이지 보장은 아니에요. 채널이 그 연산을 수행할 때 블록되지 않는다는 보장은 없습니다.

더 알아보기 (Learn more)