나는 클라이언트와의 모든 통신을 담당하는 단일 스레드를 갖는 것이 "좋은 디자인"이라고 종종 들었다.java-nio : 선택과 다른 스레드에서 보내기
그러나 클라이언트 요청을 처리하기 위해 다른 서버와 통신하는 스레드가 여러 개 있습니다.
현재 디자인은 선택 스레드에 보낼 응답을 대기열에 넣습니다. 그런 다음 선택 스레드는 응답을 대기열에서 제외하고 해당 클라이언트로 보냅니다.
이것은 바보입니다. 클라이언트에게 응답을 보낼 준비가 된 30 개의 스레드가 있고 모든 스레드가 대기열에 들어가고 하나를 선택하여 스레드를 하나씩 보내 게합니다.
닫힌 시스템을 가정하면이 제한을 무시하고 원래 클라이언트 요청을 수락 한 스레드와 (또는 같지 않더라도) 선택자가없는 스레드에서 보낼 방법이 없습니까? 그렇다면 어떻게? 폐쇄계 가정
서버는 대개 각 클라이언트 자신의 스레드 내에서. 당신이 뭔가 다른 것을들은다면 나는 그것을 잘못한 소문으로 간주 할 것입니다. – Heri
@Heri 소문이 아닙니다. 분명히 논 블로킹 (non-blocking) 멀티플렉싱 된 I/O는 결코 가열되지 않았습니다. 2002 년 약 1.4 버전의'java.nio' 패키지로 자바 1.4에 도입되었으며, 수십 년 전에 유닉스와 윈도우 및 다른 운영체제에 존재 해왔다. 여기에 잘못된 정보를 게시하지 마십시오. – EJP