【发布时间】:2012-05-18 14:44:09
【问题描述】:
如何编写一个无限期运行的线程而不需要像 while 这样的昂贵循环?
好像我不想要这样的东西
public void run() {
while(true)
{
do Blah Blah Blah
Thread.sleep(.....);
}
}
编写如此长时间运行的线程的任何优化方式。
提前致谢。
【问题讨论】:
-
你为什么认为它昂贵?
-
我猜这样一个无限的while循环会阻塞你的CPU。不是吗?所以我认为它很昂贵。
-
在工作时使用 CPU 时间并不昂贵。休眠线程会释放 CPU(因此成本不高)。
-
如果你在中间睡眠很多,那么无限循环并没有什么问题。如果您可以无限期地睡觉并且只在某些信号下醒来,那将是最好的。否则尝试只检查是否有新工作,然后再次休眠。
标签: java multithreading optimization