NIO support

2023. 2. 14. 11:27자바

NIO
New Input/Output
채널(Channel)이 양방향 버퍼를 통해
외부 데이터와 통신한다.

 

java.io, java.nio와 java.nio의 하위패키지는 자바에서 IO처리를 할 때 쓰입니다.

 

IO는 Input Output의 약자이며, NIO는 IO와 달리 읽기/쓰기를 하나의 통로를 통해 해결합니다.

 

java.nio package

NIO 패키지에는 세 가지의 주요 개념이 사용됩니다.


1. Channel: 애플리케이션 간의 데이터 스트림을 표현합니다.

 

File Channel: 파일과 함께 작동
DatagramChannel: UDP 통신을 지원
SocketChannel: TCP client와 함께 사용
ServerSocketChannel: TCP server와 함께 사용

 

2. Buffer: 채널과 함께 작동하여 데이터를 전달합니다.

 

이름에서 알 수 있듯이 버퍼는 데이터의 임시 저장소 입니다.

character, integer, and float와 같은 기본 data types을 지원하는 몇몇 버퍼 클래스가 있습니다.

 

채널과 버퍼는 서로 연결되어있습니다.

데이터는

채널 -> 버퍼로, 버퍼 -> 채널로

전달될 수 있습니다.

 

채널은 버퍼에 저장된 데이터를 출력하고,

입력된 데이터를 버퍼에 저장합니다.

 

채널은 양 방향의 버퍼를 통하여 외부의 데이터와 통신합니다.

 

3. Selector: 단일 thread로 여러개의 채널을 동시에 다룰 수 있도록합니다. 

 

셀렉터는 애플리케이션을 확장하는 데 유용합니다.