NIO
- Non-blocking I/O, New I/O
- Channel이 양방향 buffer를 통해 외부 데이터와 통신
- 읽기/쓰기를 하나의 통로로 해결
특징
- Non-blocking
- I/O 작업이 진행되는 동안 유저 프로세스의 작업을 중단시키지 않는 방식
- 비동기
- I/O 작업이 진행되는 동안 유저 프로세스에는 관심이 없음. 그저 자신의 일을 하다가 이벤트 핸들러에 의해 알림이 오면 처리하는 방식
- Buffer, Channel, Selector 이용하여 성능 향상
- Buffer: 커널에 의해 관리되는 시스템 메모리를 직접 사용할 수 있는 Buffer Class
- Channel: 읽기, 쓰기 둘 다 가능한 양방향 입출력 클래스(cf) Stream: 읽기, 쓰기 하나씩 쓸 수 있는 단방향 입출력 클래스
- Selector: 네트워크 프로그래밍 효율을 높임. 클라이언트 하나당 스레드 하나를 생성해서 처리하는 방식은 스레드 생성 수가 늘어날수록 급격한 성능 저하를 가져오므로, 이를 개선한 Reactor 패턴의 구현체
참고