자바 입출력
자바에서 파일을 읽고 조작하고 쓰기를 하는 작업을 할 떄, 소겟을 통해 데이터를 받고 보낼때 등 입출력에대한 작업을 할 떄 IO 패키지, NIO 패키지를 사용하게 되는데 자바 7 이상 버전에서 추가된 NIO 패키지를 사용하여 비동기 IO를 구현할 수 있습니다.
자바 NIO와 IO의 차이점은 다음과 같습니다
IO | NIO |
---|---|
Stream 기반
| Channel/Buffer 기반
|
객체에 직접 데이터를 쓰고 객체에서 직접 데이터를 읽는다. | 모든 데이터는 버퍼로 처리되므로 데이터를 읽을 때 버퍼로에서 읽고 데이터가 기록되면 버퍼에 기한다. 즉, NIO의 데이터에 액세스할 때마다 버퍼에 있는 데이터를 사용한다. |
Blocking IO - 스레드가 read()/write()를 호출하여 읽을 수 있는 데이터가 있거나 완전히 기록될 때까지 차단 된다. | Non Blocking IO - 반환하기 전에 데이터를 읽거나 쓸 때까지 기다리지 않습니다. - 스레드는 계속해서 다른 작업을 수행될 수 있다. |
Selectors - 단일 스레드에서 여러 입력 채널을 관리할 수 있다. - 단일 스레드에서 입력 또는 쓰기 채널을 선택할 수 있다. | |
|
Last updated