Java Thread.wait()警告

时间:2014-01-23 10:13:36

标签: java multithreading performance wait

当我在一个while循环中包含Thread.wait()时,我的IDE(NetBeans)告诉我这可能会导致性能问题,它怎么可能并且有什么方法可以解决它?

示例:

    while (timing){
        Thread.wait(10);
        foo++;
        }
    //Started in a seperate thread before activating.

编辑:感谢您的帮助,我将尝试使用' ScheduledExecutorService'代替!

1 个答案:

答案 0 :(得分:0)

您可能只想创建线程sleep,这就是您需要调用的方法的名称。

您调用Object#wait(),这是线程协调方法,并且您使用了明确的超时(相当短的)。我的猜测是NetBeans正在警告你超时,因为通常我们使用Object#wait而没有超时,如果我们使用超时,我们就不会在循环中wait

现在,NetBeans还会警告您在循环中使用Thread.sleep(),因为通常情况下,如果您想安排重复任务(这就是您正在做的事情),您将使用ScheduledExecutorService。该服务能够围绕您的应用程序提供许多不同的计划任务,所有这些任务都使用单个线程。在循环中显式写Thread.sleep()不必要地占用整个线程(一个重量级的系统资源),除了大部分时间都在睡觉之外什么都不做。