책에서 io와 nio를 비교하면서 nio를 사용하는게 더 좋은 경우에 대해 설명해주는데 이 부분이 이해가 안가서요.
NIO는 연결 클라이언트 수가 많고 하나의 입출력 처리 작업이 오래 걸리지 않는 경우에 사용하라고 나와있습니다.
NIO가 요청을 비동기 방식으로 처리하면서 무조건 요청이 온다고 해서 스레드를 할당하는게 아니라 입출력 준비가 완료된 조건이 성립할 때에 작업스레드가 작업 큐에 넣고 동작을 시킨다고 하여 스레드의 폭증을 막을 수 있다. 이런 말 같습니다.
그런데 IO에서도 스레드 폭증을 막기 위해 스레드 풀을 사용하지 않나요? 제가 생각하기에 스레드 풀로 스레드를 관리하면 NIO와 크게 달라지는 건 없을 것 같은데 말이죠..
(입출력 처리 작업이 오래 걸리지 않는 경우에 사용하라는 말은 제한된 스레드로 작업을 관리하기 때문에 엄청난 숫자의 요청이 들어온 경우 입출력 준비가 다 되었어도 스레드를 더이상 생성할 수 없어서 대기상태가 되어버리니까 그렇게 써져있는 것 같은데..이것도 io를 사용하면서 스레드 풀로 스레드를 관리하면 결과는 동일할 것 같아요)