나는 비트 토 런트 클라이언트에서 일하고 있습니다. 동료들과 의사 소통하는 동안 그들과 의사 소통하는 가장 쉬운 방법은 그들 각각에 대해 새로운 스레드를 생성하는 것입니다. 그러나 사용자가 다수의 동료와의 연결을 유지하기를 원한다면 나는 많은 스레드를 생성하게됩니다.자바 스레드 성능
또 다른 해결책은 피어 개체를 통해 반복하고 e 기간 동안 실행하는 하나의 스레드가 있다고 생각했습니다.
루비 (광산은 자바에 있음)에서 다른 라이브러리를 검사하고 각 새 피어에 대해 하나의 스레드를 생성합니다. 사용자가 연결 수를 100이나 200과 같이 높은 수로 설정하면 하나의 스레드를 생성하면 성능이 저하 될 것이라고 생각합니까? 내가 바로이 같은 의심을했고, 400 개 스레드 (4 년 전) 닷넷 응용 프로그램을 만든 후에는
저는 nio와 일하지 않았습니다. 여기저기서 몇 가지 기사 만 읽었습니다.하지만 두 번째 계획은 선택기를 반복하는 피어를 반복하는 대신에 nio route에 가깝다고 생각했습니다. 니오가 가져올 어떤 종류의 이점들? –
필자는 피어 개체를 반복 처리한다는 의미를 정확히 이해하지 못합니다. 어떤 시점에서 소켓에서 데이터를 읽어야합니다. NIO가 제공하는 non-blocking이 없다면, 쓰레드는 응답이 느린 첫 번째 피어에 갇힐 것이다. 그 스레드를 뜯어 낼 수있는 유일한 방법은 예외를 발생시키는 타임 아웃에 대한 소켓 읽기를위한 것입니다. – erickson