자바 NIO 와 IO 의 차이 점 과 비교

2466 단어 JavaNIO구별JAVA
현대 의 호텔 서비스 방식 과 전통 적 인 차 이 는 두 가지 가 있다. 1. 하나의 역할 을 추 가 했 고 고객 의 수 요 를 수집 하 는 사람 이 있어 야 한다.NIO 에서 대응 하 는 게 셀 렉 터 예요.2. 차단 서비스 방식 에서 비 차단 서비스 로 바 뀌 었 습 니 다. 손님 이 먹 을 때 종업원 은 손님 옆 에 있 지 않 아 도 됩 니 다.전통 적 인 IO 작업, 예 를 들 어 read () 는 데이터 가 읽 을 수 없 을 때 스 레 드 가 데이터 가 올 때 까지 계속 차단 되 어 점용 된다.NIO 에 읽 을 데이터 가 없 을 때 read () 는 즉시 0 으로 돌아 가 며 스 레 드 가 막 히 지 않 습 니 다.NIO 에서 클 라 이언 트 가 연결 을 만 든 후에 먼저 연결 을 Selector 에 등록 해 야 합 니 다. 손님 이 식당 에 들 어간 후에 프론트 데스크 에 식사 하 라 고 알려 주 고 프론트 데스크 에서 책상 번호 가 몇 번 인지 알려 줄 것 입 니 다. 그리고 그 책상 에 가서 앉 을 수 있 습 니 다. Selection Key 가 바로 책상 번호 입 니 다.어떤 테이블 이 서 비 스 를 필요 로 할 때 프론트 데스크 는 어떤 테이블 이 어떤 서 비 스 를 필요 로 하 는 지 기록 합 니 다. 예 를 들 어 1 번 테이블 은 주문 하고 2 번 테이블 은 계산 해 야 합 니 다. 종업원 은 프론트 데스크 에서 기록 을 찾 고 기록 에 따라 서 비 스 를 제공 합 니 다. 끝나 면 다음 테이블 을 찾 습 니 다.이렇게 서비스 하 는 시간 은 가장 효과적으로 이용 된다.
구별: IO NIO 흐름 방향 버퍼 블록 IO 비 차단 IO 선택 기 없 음
자바 NIO 는 표준 IO 와 다른 IO 작업 방식 을 제공 합 니 다. Channel and Buffers (채널 과 버퍼): 표준 IO 는 바이트 흐름 과 문자 흐름 을 기반 으로 작 동 합 니 다. NIO 는 채널 (Channel) 과 버퍼 (Buffer) 를 기반 으로 작 동 합 니 다. 데 이 터 는 항상 채널 에서 버퍼 로 읽 거나 버퍼 에서 채널 로 기록 합 니 다.Asynchronous IO (비동기 IO): 자바 NIO 는 비동기 적 으로 IO 를 사용 할 수 있 습 니 다. 예 를 들 어 스 레 드 가 채널 에서 데 이 터 를 읽 고 버퍼 로 갈 때 스 레 드 는 다른 일 을 할 수 있 습 니 다.데이터 가 버퍼 에 기록 되 었 을 때 스 레 드 는 계속 처리 할 수 있 습 니 다.버퍼 에서 채널 을 기록 하 는 것 도 유사 합 니 다.Selectors (선택 기): 자바 NIO 는 선택 기의 개념 을 도 입 했 습 니 다. 선택 기 는 여러 채널 의 이 벤트 를 감청 하 는 데 사 용 됩 니 다 (예 를 들 어 연결 이 열 리 고 데이터 가 도착 합 니 다).따라서 하나의 스 레 드 는 여러 개의 데이터 채널 을 감청 할 수 있다.
사용 장면: NIO 의 장점: 1. 장점 은 한 라인 이 여러 채널 을 관리 하 는 데 있다.그러나 데이터 의 처 리 는 복잡 해 질 것 이다.2. 동시에 열 린 수천 개의 연결 을 관리 해 야 한다 면 이 연결 들 은 매번 소량의 데이터 만 보 내 고 이 를 사용한다.전통 적 인 IO 의 장점: 1. 하나의 스 레 드 가 하나의 통 로 를 관리 하 는 상황 에 적용 된다.스 트림 데이터 의 읽 기 가 막 혔 기 때 문 입 니 다.2. 관리 가 필요 하고 연결 이 많 지 않 으 면 이 연결 들 은 대량의 데 이 터 를 보 냅 니 다.
차이 점: NIO vs IO 간 이념 상의 차이 점 (NIO 는 배경 스 레 드 에 차단 을 맡 겼 습 니 다):
IO     ,NIO       
Java IO                   ,        ,            ;
NIO           ,         
IO     ,NIO      
Java IO        。    ,       read()   write() ,      ,          ,       。                
Java NIO      ,                 ,              ,           ,        。NIO        (   )         (       ),                             。 
        。                ,           ,              。
   
Java NIO                      ,                ,            “  ”  :               ,            。      ,                   。

*      :*
*http://blog.csdn.net/evanman/article/details/50910542
https://www.cnblogs.com/kzfy/p/5063467.html*

좋은 웹페이지 즐겨찾기