SelectorProvider — 셀렉터와 선택 가능한 채널을 위한 서비스 프로바이더 클래스
SelectorProvider — 셀렉터와 선택 가능한 채널을 위한 서비스 프로바이더 클래스
SelectorProvider는 셀렉터(selector)와 선택 가능한 채널(selectable channel)을 위한 서비스 프로바이더 클래스예요. 셀렉터 프로바이더는 인자가 없는 생성자를 가지며 아래에 명시된 추상 메서드를 구현하는 이 클래스의 구체적 하위 클래스예요.
본문
public abstract class SelectorProvider extends Object
셀렉터와 선택 가능한 채널을 위한 서비스 프로바이더 클래스예요. 셀렉터 프로바이더는 인자가 없는 생성자를 가지며 아래에 명시된 추상 메서드를 구현하는 이 클래스의 구체적 하위 클래스예요. JVM의 특정 호출은 provider 메서드가 반환하는 단일 시스템 차원의 기본 프로바이더 인스턴스를 유지해요.
시스템 차원의 기본 프로바이더는 DatagramChannel, Pipe, Selector, ServerSocketChannel, SocketChannel 클래스의 정적 open 메서드에 사용돼요. 또한 System.inheritedChannel() 메서드에도 사용돼요. 프로그램은 기본 프로바이더 외의 프로바이더를 인스턴스화한 다음 이 클래스에 정의된 open 메서드를 직접 호출해 사용할 수 있어요. Java 1.4부터 사용할 수 있어요.
생성자
protected SelectorProvider()
이 클래스의 새 인스턴스를 초기화해요. 보안 관리자가 설치되어 있고 RuntimePermission("selectorProvider")를 거부하면 SecurityException을 던져요.
메서드 요약
| 수식자와 타입 | 메서드 | 설명 |
|---|---|---|
Channel |
inheritedChannel() |
이 JVM을 만든 개체로부터 상속받은 채널을 반환해요. |
abstract DatagramChannel |
openDatagramChannel() |
데이터그램 채널을 열어요. |
abstract DatagramChannel |
openDatagramChannel(ProtocolFamily family) |
데이터그램 채널을 열어요. |
abstract Pipe |
openPipe() |
파이프를 열어요. |
abstract AbstractSelector |
openSelector() |
셀렉터를 열어요. |
abstract ServerSocketChannel |
openServerSocketChannel() |
서버 소켓 채널을 열어요. |
ServerSocketChannel |
openServerSocketChannel(ProtocolFamily family) |
서버 소켓 채널을 열어요. |
abstract SocketChannel |
openSocketChannel() |
소켓 채널을 열어요. |
SocketChannel |
openSocketChannel(ProtocolFamily family) |
소켓 채널을 열어요. |
static SelectorProvider |
provider() |
JVM 호출에 대한 시스템 차원의 기본 셀렉터 프로바이더를 반환해요. |
provider
public static SelectorProvider provider()
JVM 호출에 대한 시스템 차원의 기본 셀렉터 프로바이더를 반환해요. 첫 호출은 다음과 같이 기본 프로바이더 객체를 찾아요:
- 시스템 속성
java.nio.channels.spi.SelectorProvider가 정의되어 있으면 그 값을 구체적 프로바이더 클래스의 정규화된 이름으로 취급해요. - 시스템 클래스 로더에 보이는 jar 파일에 프로바이더 클래스가 설치되어 있고, 그 jar 파일의
META-INF/services에java.nio.channels.spi.SelectorProvider프로바이더 구성 파일이 있으면, 그 파일에 명시된 첫 번째 클래스 이름을 사용해요. - 위의 어떤 방법으로도 지정되지 않았다면 시스템 기본 프로바이더 클래스를 인스턴스화해 결과를 반환해요.
openDatagramChannel
public abstract DatagramChannel openDatagramChannel() throws IOException
데이터그램 채널을 열어요. I/O 오류가 발생하면 IOException을 던져요.
public abstract DatagramChannel openDatagramChannel(ProtocolFamily family) throws IOException
지정된 프로토콜 패밀리로 데이터그램 채널을 열어요. 프로토콜 패밀리가 지원되지 않으면 UnsupportedOperationException, I/O 오류가 발생하면 IOException을 던져요. Java 1.7부터 사용할 수 있어요.
openPipe
public abstract Pipe openPipe() throws IOException
파이프를 열어요.
openSelector
public abstract AbstractSelector openSelector() throws IOException
셀렉터를 열어요.
openServerSocketChannel
public abstract ServerSocketChannel openServerSocketChannel() throws IOException
서버 소켓 채널을 열어요.
openSocketChannel
public abstract SocketChannel openSocketChannel() throws IOException
소켓 채널을 열어요.
inheritedChannel
public Channel inheritedChannel() throws IOException
이 JVM을 만든 개체로부터 상속받은 채널을 반환해요. 기본 구현은 null을 반환해요. Java 1.5부터 사용할 수 있어요.
openSocketChannel(ProtocolFamily)
public SocketChannel openSocketChannel(ProtocolFamily family) throws IOException
프로토콜 패밀리로 소켓 채널을 열어요. 기본 구현은 먼저 주어진 프로토콜 패밀리가 null이 아닌지 확인한 다음 UnsupportedOperationException을 던져요. Java 15부터 사용할 수 있어요.
openServerSocketChannel(ProtocolFamily)
public ServerSocketChannel openServerSocketChannel(ProtocolFamily family) throws IOException
프로토콜 패밀리로 서버 소켓 채널을 열어요. 기본 구현은 먼저 프로토콜 패밀리가 null이 아닌지 확인한 다음 UnsupportedOperationException을 던져요. Java 15부터 사용할 수 있어요.