비동기 입출력을 지원함 싱글 스레드 환경에서 멀티 스레드 환경처럼! 성능이 오히려 우수한 경우도 존재. Java NIO

  • 자바 1.4 도입
  • 비동기 입출력 API
  • 멀티스레딩 환경에서 효율적인 입출력 처리 지원
  • 구성요소 및 기능
    • Buffer
      • 데이터를 읽고 쓰기 위한 메모리 블록으로 채널에 종속되어 활용
    • Channel
      • 입출력 위한 인터페이스로 기존 스트림과 달리 양방향(읽기와 쓰기) 입출력 처리 가능
    • Selector
      • 여러 채널의 읽기, 쓰기, 준비 이벤트 감지

IO vs NIO

IONIO
스트림 기반 동기 모드 입출력입출력 버퍼 활용한 비동기 모드 소켓 입출력
읽기와 쓰기 스트림을 분리해 개별처리(단방향 입출력)한 채널에 대해 읽기, 쓰기 모두 가능(양방향 입출력)
논리구조가 간단하지만 상대적으로 효율이 떨어짐한 스레드에서 여러 채널을 동시에 처리 용이(네트워크 서버 개발)
본질적으로 파일입출력과 네트워크입출력은 다르지 않다…!