자바 에서 네트워크 IO 의 실현 방식(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 모드 의 작업 흐름 도 를 보 여 줍 니 다.
읽 어 주 셔 서 감사합니다. 여러분 에 게 도움 이 되 기 를 바 랍 니 다.본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.