我使用一個線程池,應該是能夠執行數百個並行任務。然而,這些任務通常只執行很少的計算,並且大部分時間都花在等待某些服務器響應上。因此,如果線程池大小包含數百個線程,則只有少數線程處於活動狀態,而大多數線程將等待。線程池與許多阻塞任務
我知道,一般這不是線程池使用一個很好的做法,但目前的設計不允許做我的任務異步,使他們能夠無需等待服務器的響應返回控制。所以考慮到這個限制,我想我最大的問題是線程堆棧空間的內存消耗增加。
那麼,有沒有辦法用某種輕量線程不會佔用多少內存?
我現在有一個JVM選項-Xss來控制堆棧內存,但似乎沒有辦法控制每個線程池或線程,而不是改變VM內的所有線程,對嗎?
而且你有一個更好的解決我的問題有什麼建議?
從我所瞭解的這個線程執行網絡通信? – 2012-03-16 13:39:34
是的,但不幸的是我沒有通信層的低級控制。 – Lobachevsky 2012-03-19 15:05:08
只需注意:如果線程的總數實際上受到關注,則緩存的緩衝池似乎非常適合您的用例。高速緩存將允許在活動高峯時重新使用線程,並且生存時間將允許它們在給定的時間量之後停止(從而釋放資源)。這可以緩解這些問題(如果你真的有一個,例如1000個線程在典型的當前硬件上是完美的)。 – GPI 2017-08-10 14:21:36