Ary*_*yan 0 java optimization multithreading
任何人都可以编写一个无限期运行的线程,而不需要像这样昂贵的循环?
就像我不想要这样的东西
public void run() {
while(true)
{
do Blah Blah Blah
Thread.sleep(.....);
}
}
Run Code Online (Sandbox Code Playgroud)
编写这样一个长时间运行的线程的任何优化方法.
提前致谢.
我发现while (true) { ... }这是实现普通无限循环的最简洁方法.我认为没有更紧凑或更具成本效益的方法.
有些人更喜欢for (;;) { ... },但我觉得它看起来很尴尬.
在成本方面,javac将两者编译为
public static void main(java.lang.String[]);
Code:
0: ...
...
...
goto 0
}
Run Code Online (Sandbox Code Playgroud)
如果你确实希望循环是无限的,我看不到任何更有效的方法.
既然你有一个Thread.sleep在你的代码,我也建议你寻找到例如java.util.Timer和java.util.TimerTask.
如果你的循环尝试反复做某事,那么从长远来看你可能会浪费CPU时间.特别是如果您碰巧有这种类型的线程的许多实例.在这种情况下,我建议你研究一下观察者模式.让对象等待某事,听取影响成功的可能性的对象.