선택 가능 채널

선택 가능 채널 (SelectableChannel)

Selector를 통해 다중화(multiplex)할 수 있는 채널을 나타내는 추상 클래스예요. 차단·비차단 모드를 지원합니다.

출처: Java API Reference

본문

SelectableChannelSelector를 통해 다중화할 수 있는 채널을 나타내는 추상 클래스예요.

public abstract class SelectableChannel extends AbstractInterruptibleChannel
implements Channel

셀렉터와 함께 사용하려면 먼저 register() 메서드로 등록해야 해요. 이 메서드는 채널의 셀렉터 등록을 나타내는 새 SelectionKey 객체를 반환합니다.

public abstract SelectionKey register(Selector sel, int ops, Object att) throws ClosedChannelException
public final SelectionKey register(Selector sel, int ops) throws ClosedChannelException
public abstract boolean isRegistered()
public abstract int validOps()
public abstract SelectorProvider provider()

선택 가능 채널은 차단 모드나 비차단 모드 중 하나예요.

  • 차단 모드 — 채널에서 수행하는 모든 I/O 연산은 완료될 때까지 블록돼요.
  • 비차단 모드 — I/O 연산이 블록되지 않고, 요청된 것보다 적은 바이트나 아무 바이트도 전송하지 못할 수 있어요.
public abstract SelectableChannel configureBlocking(boolean block) throws IOException
public abstract boolean isBlocking()
public abstract Object blockingLock()

isBlocking()으로 현재 모드를 확인하고, configureBlocking()으로 모드를 전환할 수 있어요. 소켓 채널, 서버 소켓 채널, 데이터그램 채널이 이 클래스를 상속합니다.

더 알아보기 (Learn more)