我参与了使用多线程的项目。每次通话都会产生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