暂停整个java程序时使用是否有危险?

暂停整个java程序时使用是否有危险?,java,loops,Java,Loops,好的,我对java编程非常陌生,但我真的需要暂停程序执行,直到某个事件发生: while(!isItHappened()); doSomethingAfterItHappend(); 避免这种尴尬局面的最佳方法是什么?不太危险(多亏了先发制人的多任务处理),而是浪费资源。使用计数为1的,如示例中的startSignal。或者使用Object的wait和notify/notifyAll方法深入挖掘并实现您自己的等待机制。我比较了CPU使用情况 CPU使用率13-15%: while(!isItH

好的,我对java编程非常陌生,但我真的需要暂停程序执行,直到某个事件发生:

while(!isItHappened());
doSomethingAfterItHappend();
避免这种尴尬局面的最佳方法是什么?

不太危险(多亏了先发制人的多任务处理),而是浪费资源。使用计数为1的,如示例中的
startSignal
。或者使用
Object
wait
notify
/
notifyAll
方法深入挖掘并实现您自己的等待机制。

我比较了CPU使用情况

  • CPU使用率13-15%:

    while(!isItHappened());
    doSomethingAfterItHappend();
    
  • CPU使用率为0-1%:

    synchronized(itHappend) {
        itHappened.wait();   
    }
    doSomething();
    

  • 所以第二段代码显然更好。非常感谢duckstep。

    视情况而定。例如,在后台线程中,这通常很好。您可以使用侦听器模式来避免这种情况。@Bubletan这段代码在某个事件侦听器中。那么您不应该这样做。事件调度程序线程将被阻止。这就是所谓的“忙等待”。另请参阅。好的,我将尝试倒计时闩锁并给您反馈。抱歉我的英语不好:)我用了wait和notify,现在我的代码是这样的:
    syncronized(Ithapped){Ithapped.wait();dosomethingaafterithappend();}
    更好吗?是不是“忙着等待”?@J.Leeroy正在忙着等待。