在我们的项目中,我创建了许多java线程来做一些连续的工作。
大多数时候这些线程都在休眠,因此总cpu成本很低。
带有1168
个帖子的,system overload
应低于0.20
但后来我注意到如果我用jvm创建超过1000个线程,那么我将得到
fork: retry: Resource temporarily unavailable
当我想通过vm
连接jvm
(我的意思是 VM ,而不是ssh
)时,这似乎是一个关于系统资源的严重问题。
我非常担心我的节目会发生什么......
答案 0 :(得分:4)
这么多线程看起来不是一个好设计。我建议接收当前在一个循环中唤醒你的线程的所有事件,这些事件可以立即将它们转换为Future或Runnables并发布到某些ExecutorService。此服务可以为您管理线程池。使用ServerSocket和Socket的标准方法非常实现。
答案 1 :(得分:1)