자바 에서 네트워크 IO 의 실현 방식(BIO,NIO,AIO)소개

네트워크 프로 그래 밍 에서 가장 많이 접 하 는 것 은 Socket 을 이용 하여 네트워크 통신 개발 을 하 는 것 이다.자바 에 서 는 주로 다음 과 같은 세 가지 실현 방식 인 BIO,NIO,AIO 가 있다.
이 세 가지 개념 에 대한 분석 은 이전에 줄곧 아 는 것 같 았 지만 표현 이 명확 하지 않 았 다.다음은 총 결 을 통 해 완전히 분석 하 겠 다.
1.BIO 방식
우선 나 는 비교적 통속 적 인 언어 로 설명 한다.
BIO 는 IO 를 차단 하 는 것 입 니 다.모든 TCP 연결 이 서버 에 들 어 오 면 연결 을 만 들 고 메 시 지 를 처리 하 는 스 레 드 를 만들어 야 합 니 다.만약 에 중간 에 차단 이 발생 하면(예 를 들 어 연결,데 이 터 를 읽 고 데 이 터 를 쓸 때 장애 가 발생 한다)스 레 드 도 차단 이 발생 하고 동시 다발 상황 에서 N 개의 연결 은 N 개의 스 레 드 로 처리 해 야 한다.
이런 방식 의 단점 은 병발 상황 에서 효율 이 낮 다 는 것 이다.
다음은 BIO 의 작업 상황 을 설명 하 는 그림 입 니 다.

2.NIO 방식
NIO 는 JDK 1.4 가 제기 한 것 입 니까?아니면 먼저 통속 적 인 말로 NIO 의 작업 원 리 를 설명 합 니까?
NIO 는 비 차단 IO 로 이벤트 구동 에 기반 한 사상(Reactor 스 레 드 모델)입 니 다.BIO 와 비교 하면 NIO 는 하나의 스 레 드 를 사용 하여 모든 Socket 채널 을 관리 합 니 다.즉,Selector 체 제 를 바탕 으로 사건 을 조회 할 때(연결,연결,읽 기,쓰기)서로 다른 처리 스 레 드(handler)에 전 달 됩 니 다.
다음은 Reactor 모델 의 작업 응용 도 를 보 여 줍 니 다.

3.AIO 방식
AIO 는 JDK 1.7 이 제기 한 비동기 IO 다.AIO 는 Proactor 모드 를 채택 했다.우리 가 먼저 분석 해 야 할 것 은 AIO 와 NIO 의 차이 점 이다.
(1)NIO 의 통 지 는 Handler 이전에 발생 한 것 이다.
(2)AIO 의 통 지 는 읽 기와 쓰기 등 처리 후 발생 하 는 리 셋 으로 통지 가 있 을 때 관련 조작 이 이미 끝났다 는 것 을 나타 낸다.
AIO 는 읽 기와 쓰기 작업 을 할 때 해당 하 는 read/write 방법 을 호출 하고 CompletionHandler(동작 이 완 료 될 때 프로세서)에 전송 하 며 동작 이 완 료 된 후에 CompletionHandler 를 호출 합 니 다.NIO 알림 은 동작 전에 발생 한 것 으로 읽 고 쓸 수 있 을 때 이 이벤트 들 을 발견 한 후 Handler 를 호출 하여 처리 합 니 다.
다음은 Proactor 모드 의 작업 흐름 도 를 보 여 줍 니 다.

읽 어 주 셔 서 감사합니다. 여러분 에 게 도움 이 되 기 를 바 랍 니 다.본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기