0

해당 패턴 (코드 샘플)의 정확한 이름은 확실하지 않지만 실제로 존재합니다. 클라이언트로 작동하고 서버에 연결하는 클래스가 있습니다. 멀티 스레드로 실행하고 싶습니다. 그러나 여기에 트릭이 있습니다. 스레드 당 전체 프로세스 작업을 완료하는 데 걸리는 시간을 추적하고 싶습니다. 그리고 작업 시간이 지정된 경계에 있으면 더 많은 스레드와 속도가 낮아질 때까지 더 많은 스레드를 시작해야합니다. 등이 있습니다.다중 스레드 작업자 패턴

나는 분명합니까?

조언하십시오 ...

답변

2

더 많은 스레드를 추가하여 더 빠르게 개별 요청을 완료 할 수 없습니다.

또한 모든 요청이 동일한 서버에 대한 것이면 실제로 여러 개의 동시 요청을 수행하여 서버 속도를 저하시킬 수 있습니다. 최대 동시 연결 수와 같은 다른 고려 사항과는 차별됩니다.

그럼, 단지 "run it in multithreaded"보다 복잡합니다!

+0

로드 밸런싱 기술의 대부분 발견되지 않습니다. 도와주세요! –

0

패턴의 핵심은 단지 하나의 패턴이 아니라는 것입니다. 당신이 Task 시간의 적절한 양의 완료 여부를 결정하는 TaskProfiler 사용할 수 있습니다 taskStartedtaskFinished 이벤트에 대한 수신 대기 TaskListener을 원하는처럼

는 소리가 난다. 소리가 나는 거기에서 당신은 다음 TaskListener을 통지하는 TaskExecutor를 원하는 것처럼 시작하고 끝날 때

을 (당신의 임계 값은 모든 작업에 균일하지 않은 경우에도, 그것에 대해 자세한 내용을 확인하기 위해 VisitTask 할 수 있습니다) 특정 작업.

TaskExecutor는 프로파일/수신기로부터 피드백을 수신하는 TaskAdministrator 의해 조정될 수 사용할 increaseWorkerPooldecreaseWorkerPool 및 방법을 만들 수있다.

이것은 대부분 실증적이므로 작업 완료 시간을 단일 taskComplete(Task task, long millis) 메소드의 일부로 전달하고자 할 수 있습니다.

그 모든

는 "아주 좋은 작동하지 않을 때까지 산란 스레드"고 말했다 된 나는이 솔루션을 필요로 ... 그럼에도 불구하고