暂停整个java程序时使用是否有危险?
好的,我对java编程非常陌生,但我真的需要暂停程序执行,直到某个事件发生:暂停整个java程序时使用是否有危险?,java,loops,Java,Loops,好的,我对java编程非常陌生,但我真的需要暂停程序执行,直到某个事件发生: while(!isItHappened()); doSomethingAfterItHappend(); 避免这种尴尬局面的最佳方法是什么?不太危险(多亏了先发制人的多任务处理),而是浪费资源。使用计数为1的,如示例中的startSignal。或者使用Object的wait和notify/notifyAll方法深入挖掘并实现您自己的等待机制。我比较了CPU使用情况 CPU使用率13-15%: while(!isItH
while(!isItHappened());
doSomethingAfterItHappend();
避免这种尴尬局面的最佳方法是什么?不太危险(多亏了先发制人的多任务处理),而是浪费资源。使用计数为1的,如示例中的startSignal
。或者使用Object
的wait
和notify
/notifyAll
方法深入挖掘并实现您自己的等待机制。我比较了CPU使用情况
while(!isItHappened());
doSomethingAfterItHappend();
synchronized(itHappend) {
itHappened.wait();
}
doSomething();
所以第二段代码显然更好。非常感谢duckstep。视情况而定。例如,在后台线程中,这通常很好。您可以使用侦听器模式来避免这种情况。@Bubletan这段代码在某个事件侦听器中。那么您不应该这样做。事件调度程序线程将被阻止。这就是所谓的“忙等待”。另请参阅。好的,我将尝试倒计时闩锁并给您反馈。抱歉我的英语不好:)我用了wait和notify,现在我的代码是这样的:
syncronized(Ithapped){Ithapped.wait();dosomethingaafterithappend();}
更好吗?是不是“忙着等待”?@J.Leeroy正在忙着等待。