【发布时间】:2013-02-07 23:57:34
【问题描述】:
我正在开发一个需要一段时间(true)的系统,其中循环不断侦听队列并增加内存中的计数。
数据不断地进入队列,所以我无法避免 while(true) 条件。但自然它会将我的 CPU 利用率提高到 100%。
那么,我怎样才能让一个线程保持活动状态,它侦听队列尾部并执行一些操作,但同时将 CPU 利用率降低到 100%?
【问题讨论】:
-
while (true) {}由于 while 循环而占用大量 CPU。while (true) { /* lot of processing */ }由于体内发生的事情而占用大量 CPU。不同的问题。 -
如果它进入队列,使用阻塞队列等待下一个元素到达。
-
这个线程发生了什么?
-
问题:“我可怜的不断轮询设计要求我使用 100% 的 CPU。我怎么能不使用 100% 的 CPU? i>”回答:“改变你的设计。不要经常轮询。”
-
@Nik 我同意,需要重新考虑我处理通过队列传入的恒定数据流的方式。
标签: java multithreading