그림과 같이 Java에서 IO와 NIO의 주요 차이점은 다음과 같습니다.
#🎜 🎜##🎜 🎜#1. 스트림 지향 및 버퍼 지향IO는 스트림 지향이고 NIO는 버퍼 지향입니다.
Java IO는 스트림 지향적입니다. 즉, 모든 바이트를 읽을 때까지 한 번에 하나 이상의 바이트를 스트림에서 읽으며 어디에도 캐시되지 않습니다.
Java NIO의 버퍼 지향 접근 방식은 약간 다릅니다. 데이터는 나중에 처리할 버퍼로 읽혀지며 필요에 따라 버퍼에서 앞뒤로 이동합니다.
2. 차단 및 비차단 IO다양한 Java IO 스트림이 차단됩니다. 스레드가 read() 또는 write()를 호출하면 일부 데이터를 읽거나 데이터가 완전히 기록될 때까지 스레드가 차단됩니다.
Java NIO의 비차단 모드를 사용하면 스레드가 특정 채널에서 데이터 읽기 요청을 보낼 수 있지만 현재 사용 가능한 데이터가 없으면 아무것도 가져올 수 없습니다. , 스레드를 차단된 상태로 유지하는 대신 데이터를 읽을 수 있을 때까지 스레드가 다른 작업을 계속할 수 있습니다.
3. SelectorJava NIO의 선택기를 사용하면 별도의 스레드에서 여러 입력 채널을 모니터링할 수 있으며, 선택기를 사용하여 여러 채널을 등록할 수 있습니다. 처리할 수 있는 입력이 이미 있는 채널을 "선택"하거나 쓸 준비가 된 채널을 선택하는 데 별도의 스레드가 사용됩니다. 이 선택 메커니즘을 사용하면 단일 스레드가 여러 채널을 쉽게 관리할 수 있습니다.
추천 튜토리얼:
java 튜토리얼위 내용은 자바니오와 io의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!