在我们的项目中,我创建了很多 Java 线程来完成一些连续的工作。
大多数时候这些线程都处于 hibernate 状态,因此总 CPU 成本较低。
与1168
线程,system overload
应低于 0.20
但后来我注意到,如果我用jvm创建超过1000个线程,那么我会得到
fork: retry: Resource temporarily unavailable
当我想连接时vm
(我的意思是 VM ,而不是 jvm
)通过 ssh
,这似乎是一个关于系统资源的严重问题..
我非常担心我的程序中会发生什么..
最佳答案
这么多线程看起来并不是一个好的设计。我建议在一个循环中接收当前唤醒线程的所有事件,这些事件可以立即将它们转换为 Future s 或 Runnables 并发布到一些 ExecutorService 。该服务可以为您管理线程池。 ServerSocket 和 Socket 的标准方法基本上就是这样实现的。
关于java - 我应该在虚拟机中使用多少个线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14539022/