심심해서 예기해보는 NIO vs IO 이다.

시간이 없고 귀찮은 관계로 대충 DOT 포인트로 설명해보겠다.

IO
- 기본 IO
- Stream based (즉 쓰레드가 데이터가 준비되는대로 읽는방식)
- Blocking IO (쓰레드가 스트림을 읽는동안 쓰레드 deadlock)
예제
BufferedReader br = new BufferedReader(new FileInputStream(new File("path")));
String firstName = br.readLine();
String lastName = br.readLine();
String age = br.readLine();
String grade = br.readLine();

자바에서 NIO 를 안쓰고 IO 를 써야되는 이유
- 후자가 은근히 개발하기 쉽다.
- 적은 넘버의 소켓클라이언트에게 장점
- SSL 을 사용하여 개발할때 IO가 더쉬움

NIO
설명 귀찬
어쨋든 간단하게 말해서 이건 Non blocking IO 이고 selector로 thread가 없는대신에 다수의 클라이언트를 상대할때 thread가 필요한 목적을 대신해줌.

NIO가 최근 이슈가 된 이유는 구글앱앤진 같은 플렛폼에서 싱글스레드만 허용해서 그런듯

참고로 NIO 가 new input output 인데 new붙어서 이게 최근 기술같은 느낌 들어서 이걸 무조건 선택하면 오산임.

이것도 매우 오래된 기술이지만 NIO api는 최근 업그레이드된 NIO.2 도 나온거보니 발전은 NIO가 더 많이하는듯