0

我不確定該模式的確切名稱(代碼示例),但我確定它存在。 我有一個類作爲客戶端並連接到服務器。 我想在多線程中運行它。但這是訣竅。 我想跟蹤每個線程完成整個流程操作所需的時間。 如果操作時間在指定的範圍內,則應該啓動更多的線程,等等,直到線程太多,速度降低。多線程工人模式

我清楚嗎?

請指教......

回答

2

您不能通過添加更多線程來更快速地完成單個請求。另外,如果您的所有請求都發送給同一臺服務器,則實際上您可能會通過發出多個併發請求來減慢服務器的速度。除了其他考慮因素之外,例如達到最大併發連接數。

因此,它比"run it in multithreaded"更復雜!

+0

不過,我需要這個解決方案。請幫忙! –

0

模式的關鍵在於它不只是一個。

這聽起來像你想有一個TaskListener偵聽taskStartedtaskFinished事件,可以使用TaskProfiler這將決定是否在適當的時間量完成了Task。 (這也可能要VisitTask,以確定有關它的更多細節,如果你的閾值不是所有任務均勻)

從那裏,它聽起來像你那麼想TaskExecutor這將通知TaskListener當它開始和結束一個特定的任務。

TaskExecutor可能使可用increaseWorkerPooldecreaseWorkerPool方法可以通過從分析器/監聽器接收反饋的TaskAdministrator進行調整。

這大多是示範性的,您可能只想將任務完成時間作爲單個taskComplete(Task task, long millis)方法的一部分傳遞。

所有這一切都已經表示,「重生線程,直到它不工作非常好」是沒有的負載均衡技術最啓發式...