자바 기초 : 12, BIO, NIO, AIO 무엇의 차이는?

BIO, NIO, AIO 무슨 차이점은 무엇입니까?

1 간략

BIO : 동기 차단 IO. (IO 차단)
NIO를 : 동기 IO를 비는 차단. (블로킹 IO)
AIO는 비동기 IO를 비 차단. (비동기 IO)

이 방법으로 연결 및 고정 아키텍처, 서버 자원의 상대적으로 적은 수의 적합한 BIO는 상대적으로 높은 제한 동시 응용 프로그램의 JDK1.4 이전에는 옵션이 있지만, 이해하기 쉬운 직관적 인 프로그램입니다.
이러한 채팅 서버 한정 동시 응용보다 복잡한 프로그래밍과 같은 다중 접속 짧은 (라이트 동작) 아키텍처에 적합한 NIO 연결 수는 JDK1.4 지원을 개시한다.
AIO 방법은 연결 수보다 더 많은에 적용되며, 결선이 비교적 긴 (무거운 작업) 아키텍처, 완전히 동시 작업에 참여하는 등 앨범 서버, OS를 호출하고, 프로그래밍은 더 복잡한, JDK7 지원하기 시작한다.

동기 및 비동기
동기화 : 발신자가 치료 완료를 요청하기 전에, 전화를 초기화 한 후, 호출은 반환하지 않습니다.
비동기 : 발신자가 결과를 기다릴 필요가 없습니다, 발신자는 결과를 반환하는 발신자 콜백 메커니즘에 의해 통보됩니다.

차단 및 비 차단
차단 : 조건이 계속 준비하는 경우에만 요청을 시작, 호출자가 결과를 반환하는 요청을 기다리고있다, 즉, 현재의 thread는 다른 업무에 종사 할 수없는, 일시 중단됩니다.
비 차단 : 요청을 시작, 호출자가 반환하지 않는 결과를 기다리고있다, 당신은 다른 일을 갈 수 있습니다.

2, BIO

BIO 개념

BIO는 기존의 소켓을 통해 네트워크 통신의 가장 기본적인 기능을 달성하기 위해, 기존의 IO이다. 다음과 같은 예로서 서버 측에서 소켓 기본적인 과정이다
. (1) 개방 : 오픈 ServerSocket의 커넥터
(2) 허용 : 연결 수락
(3)을 읽어 판독 된 데이터
(4)를 전송 : 송신 데이터
(5)를 확대 닫기 자원
클라이언트 서버와 세 번 악수. 키워드 : 소켓과 ServerSocket를,
클라이언트가 서버에 연결 요청을 시작하지 않는 경우, 차단합니다 동의합니다. 연결에 성공하면 데이터 읽기에 대한 호출이 차단됩니다, 준비가되지 않았습니다. 동시에 여러 연결을 처리, 당신은 멀티 스레드 접근을해야합니다. 각 스레드는 효율을 저하 컨텍스트 스위치 스레드, 많은 수의 결과를 차단하고, 자신의 스택 공간이 있기 때문에.

아래와 같이 동작 BIO 모드 :
그림 삽입 설명 여기

BIO 시나리오

이 방법으로 연결 및 고정 아키텍처, 서버 자원의 상대적으로 적은 수의 적합한 BIO는 상대적으로 높은 제한 동시 응용 프로그램의 JDK1.4 이전에는 옵션이 있지만, 이해하기 쉬운 직관적 인 프로그램입니다.

BIO 코드 샘플

? 링크를 작성하십시오

3 NIO

NIO 개념

BIO는 스트림 지향하고, 캐시 NIO가 중심이다. NIO는 원자로 디자인 패턴을 사용하여 채널, 선택기, 버퍼를 통해 IO 작업을 비 차단 달성했다.
NIO는, 클라이언트와 서버 폴링 등록 된 채널 선택기를 사용하여 채널을 통해 연결됩니다. 키워드 : 된 SocketChannel과의 ServerSocketChannel,
채널이있다 양방향 비 블로킹 채널, 채널 측면 읽기 및 쓰기 데이터 수 있습니다. 버퍼와 상호 작용합니다.
관찰자와 유사 선택기. 데이터에 대한 모든 채널에 폴링 액세스, 읽기 및 쓰기 작업. 따라서 셀렉터의 효율을 개선하는 다수의 채널, 다수의 스레드 간의 전환없이 컨텍스트 단일 스레드 액세스들을 사용하여 구현.
버퍼는 데이터를 저장하는 버퍼이다. 읽기 및 쓰기 데이터에서, 버퍼에서 수행된다. NIO의 데이터에 대한 액세스 시간은, 상기 버퍼에 의해 작동된다. 버퍼 등의 ByteBuffer, CharBuffer를하고 있습니다.

아래와 같이 동작 NIO 모드 :
그림 삽입 설명 여기

NIO 응용 프로그램 시나리오

이러한 채팅 서버 한정 동시 응용보다 복잡한 프로그래밍과 같은 다중 접속 짧은 (라이트 동작) 아키텍처에 적합한 NIO 연결 수는 JDK1.4 지원을 개시한다.

NIO 코드 샘플

? 링크를 작성하십시오

4 AIO

AIO 개념

비동기 통신을 비는 차단. 그것은 NIO에 근거하여 비동기 채널의 개념을 소개합니다.
AIO 비동기 비동기 통신 채널을 사용하여, 이벤트 기반의 콜백 메카니즘이다. 키워드 : AsynchronousSocketChannel 및 AsynchronousServerSocketChannel.

AIO 시나리오

AIO 방법은 연결 수보다 더 많은에 적용되며, 결선이 비교적 긴 (무거운 작업) 아키텍처, 완전히 동시 작업에 참여하는 등 앨범 서버, OS를 호출하고, 프로그래밍은 더 복잡한, JDK7 지원하기 시작한다.

AIO 코드 샘플

? 링크를 작성하십시오

게시 57 개 원래 기사 · 원의 찬양 (13) · 전망 1128

추천

출처blog.csdn.net/weixin_42924812/article/details/105053568