>  기사  >  Java  >  자바 NIO(1) 자바 NIO 개요

자바 NIO(1) 자바 NIO 개요

大家讲道理
大家讲道理원래의
2017-04-11 14:06:081508검색

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를 사용하는 것이 편리할 수 있습니다. 예를 들어 채팅 서버에서.

Selector를 사용하여 단일 스레드에서 3개의 채널을 처리하는 그림입니다.

Selector를 사용하려면 채널을 선택기로 이동한 다음 해당 select() 메서드를 호출합니다. 이 메소드는 등록된 채널이 이벤트 준비가 될 때까지 차단됩니다. 이 메서드가 반환되면 스레드는 이러한 이벤트를 처리할 수 있습니다. 이벤트의 예로는 새 연결 수신, 데이터 수신 등이 있습니다.

위 내용은 자바 NIO(1) 자바 NIO 개요의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.