无限期线程优化

Ary*_*yan 0 java optimization multithreading

任何人都可以编写一个无限期运行的线程,而不需要像这样昂贵的循环?

就像我不想要这样的东西

public void run() {

            while(true)
            {
                do Blah Blah Blah
                Thread.sleep(.....);

            }

        }
Run Code Online (Sandbox Code Playgroud)

编写这样一个长时间运行的线程的任何优化方法.

提前致谢.

aio*_*obe 6

我发现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.Timerjava.util.TimerTask.


如果你的循环尝试反复做某事,那么从长远来看你可能会浪费CPU时间.特别是如果您碰巧有这种类型的线程的许多实例.在这种情况下,我建议你研究一下观察者模式.让对象等待某事,听取影响成功的可能性的对象.