Java NIO는 다음 핵심 부분으로 그룹화됩니다:
채널
버퍼
Selector
Java NIO에는 그 밖에도 많은 클래스와 컴포넌트가 있지만, 내 생각에는 Channel, Buffer, Selector가 핵심을 이루는 API. Pipe 및 FileLock과 같은 기타 구성 요소는 세 가지 핵심 구성 요소와 함께 사용되는 유틸리티 클래스일 뿐입니다. 따라서 이 개요에서는 이 세 가지 구성 요소에 중점을 둘 것입니다. 다른 구성 요소는 별도의 장에서 다룹니다.
기본적으로 모든 IO는 NIO의 채널에서 시작됩니다. 채널은 스트림과 약간 비슷합니다. 데이터는 채널에서 버퍼로 읽혀지거나 버퍼에서 채널로 쓰여질 수 있습니다. 다음은 그림입니다.
채널과 버퍼에는 여러 유형이 있습니다. 다음은 JAVA NIO의 일부 주요 채널 구현입니다.
FileChannel
DatagramChannel
SocketChannel
ServerSocketChannel
보시다시피 이러한 채널은 UDP 및 TCP 네트워크 IO는 물론 파일 IO도 처리합니다.
이러한 클래스와 함께 몇 가지 흥미로운 인터페이스가 있지만 단순성을 위해 개요에서는 언급하지 않으려고 노력했습니다. 관련이 있는 이 튜토리얼의 다른 장에서 이에 대해 설명하겠습니다.
다음은 Java NIO의 주요 버퍼 구현입니다.
ByteBuffer
CharBuffer
DoubleBuffer
FloatBuffer
IntBuffer
LongBuffer
ShortBuffer
이러한 버퍼는 IO를 통해 전송할 수 있는 기본 데이터 유형을 다룹니다. , int, long, float, double 및 char.
Java NIO에는 메모리 매핑 파일을 나타내는 데 사용되는 MappedByteBuffer도 있습니다. 이에 대해서는 개요에서 설명하지 않겠습니다.
Selector를 사용하면 단일 스레드가 여러 채널을 처리할 수 있습니다. 애플리케이션이 여러 연결(채널)을 열지만 각 연결의 트래픽이 매우 낮은 경우 Selector를 사용하는 것이 편리할 수 있습니다. 예를 들어 채팅 서버에서.
Selector를 사용하여 단일 스레드에서 3개의 채널을 처리하는 그림입니다.
Selector를 사용하려면 채널을 선택기로 이동한 다음 해당 select() 메서드를 호출합니다. 이 메소드는 등록된 채널이 이벤트 준비가 될 때까지 차단됩니다. 이 메서드가 반환되면 스레드는 이러한 이벤트를 처리할 수 있습니다. 이벤트의 예로는 새 연결 수신, 데이터 수신 등이 있습니다.
위 내용은 자바 NIO(1) 자바 NIO 개요의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!