我參與了使用多線程的項目。每次通話都會產生4-5個線程(該系統是爲出租車呼叫中心開發的)。這裏的問題是,在閱讀JMS隊列中的信息之後,一個新的線程必須產生,這不會發生。此問題隨機發生。我建議在StackOverflow中使用I earlier posted similar question進行加載注入。java中的多線程問題
在研究了加載注入之後,我認爲,在我的開發服務器中進行測試是不可行的,因爲我的系統將通過控制用戶訪問的調用流進行訪問。我花了一些時間研究JVM調優和線程池。對於這個特定的系統進程,大約每天14K-15K次呼叫,在高峯時間內,隊列將會非常高(可能會在隊列中等待400-500個呼叫),每次調用4-5個線程都必須產生。從日誌中我沒有看到OutOfMemoryError之類的東西。 有沒有其他的原因可能會阻止線程的產卵?
我的JVM conf是xms:128m Xmx:1024m 環境是windows server 32bit,4GB ram。
將包括threadstacksize幫助產卵的線程沒有任何障礙?
我也在研究線程池的可行性。在產生固定數量的線程時,我需要研究它是否會影響系統的整體性能?
操作系統限制可以同時激活的線程數並不是不可能的。不把它放在答案中,因爲我不確定這是如何影響JVM的(例如,如果他們做了任何事情來隱藏用戶代碼的限制)。 – Romain
我肯定會推薦使用線程池路由,請參閱http://download.oracle.com/javase/6/docs/api/java/util/concurrent/Executors.html#newFixedThreadPool(int) – Qwerky