[JAVA] NIO

박지영·2021년 5월 30일
0

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 패턴의 구현체

참고

profile
개발 커리어 저장소

0개의 댓글