[NIO]TCP 넌블로킹 채널 - 선택된 키셋
2017. 1. 5. 13:51 - 개발 새발
- select() 메소드
int keyCount = selector.select();
int keyCount = selector.select(long timeout);
int keyCount = selector.selectNow();
select()는 관심키셋에 저장된 SelectionKey로부터 작업 처리 준비가 되었다는 통보가 올 때까지 대기(블로킹)한다. 최소한 하나의 SelectionKey로부터 작업 처리 준비가 되었다는 통보가 오면 리턴한다. 리턴값은 통보 해온 SelectionKey의 수
이 메소드는 블로킹되므로 UI 및 이벤트를 처리하는 스레드에서 호출하면 안되고, 별도의 작업 스레드를 생성해서 실행해야 한다. select()가 리턴 하는 경우
- 채널이 작업 처리 준비가 되었다는 통보를 할 때
- Selector의 wakeup() 메소드를 호출할 때
- select()를 호출한 스레드가 인터럽트될 때
- 작업 유형 바꾸기
selectionKey.interestOps(SelectionKey.OP_WRITE);
selector.wakeup();
wakeup() 메소드는 변경된 작업 유형을 감지하도록 하기 위해 Selector의 select() 브로킹을 해제하고 다시 실행하도록 한다.
2017/01/05 - [코딩/Java] - [NIO]TCP 넌블로킹 채널 - 셀렉터 생성과 등록
'코딩 > Java' 카테고리의 다른 글
[NIO]TCP 비동기 채널 - 비동기 소켓 채널 (0) | 2017.01.05 |
---|---|
[NIO]TCP 비동기 채널 - 비동기 서버소켓 채널 (0) | 2017.01.05 |
[NIO]TCP 비동기 채널? (0) | 2017.01.05 |
[NIO]TCP 넌블로킹 채널 - 셀렉터 생성과 등록 (0) | 2017.01.05 |
[NIO]TCP 넌블로킹 채널? (0) | 2017.01.05 |