>Java >java지도 시간 >JAVA-1NIO에 대한 자세한 소개

JAVA-1NIO에 대한 자세한 소개

零下一度
零下一度원래의
2017-06-25 10:44:461037검색

JAVA-1NIO 개요

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

  • IntB uffer

  • LongBuffer

  • ShortBuffer

  • 이러한 버퍼는 IO를 통해 보낼 수 있는 기본 데이터 유형(byte, short, int, long, float, double 및 char)을 다룹니다.

  • Java NIO에는 메모리 매핑 파일을 나타내는 데 사용되는 MappedByteBuffer도 있습니다. 개요에서는 설명하지 않겠습니다.
  • Selector

  • Selector를 사용하면 단일 스레드가 여러 채널을 처리할 수 있습니다. 애플리케이션이 여러 연결(채널)을 열지만 각 연결의 트래픽이 매우 낮은 경우 Selector를 사용하는 것이 편리할 수 있습니다. 예를 들어 채팅 서버에서.
  • 다음은 Selector를 사용하여 단일 스레드에서 3개의 채널을 처리하는 그림입니다.

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

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

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