【发布时间】:2013-02-25 17:43:38
【问题描述】:
只是想知道什么是决定何时停止在单核机器上停止创建新线程的最佳方法,该机器作为一个线程多次运行相同的程序?
线程正在获取网页内容并进行一些处理,这意味着每个线程的负载在线程终止之前并不是一直不变的。
我正在考虑有一个线程来监视 CPU/RAM 负载,如果负载达到某个阈值,则停止创建线程,但如果达到某个线程数,也停止创建线程,以确保 CPU不会超载。
您对目前有哪些技术可以实现这一目标有任何反馈吗?
非常感谢, 弗拉基米尔
【问题讨论】:
-
我认为你是在正确的轨道上。要考虑的一件事是使用 NIO 和选择器,这样你的线程总是很忙,而不是总是等待 IO。如果没有高峰和低谷,就很难最大限度地提高吞吐量。
-
在那里,Gray 击败了我 :) 使用阻塞 IO,您将需要大量可笑的线程,这将浪费 RAM,而且除了等待之外几乎什么都不做。
-
您可能不想自己创建线程。使用
ExecutorService,它为Runnable或Callable任务重用线程并减少创建销毁线程的开销。
标签: java multithreading