好的,我对java编程很陌生,但我确实需要暂停程序执行直到某些事件发生:
while(!isItHappened());
doSomethingAfterItHappend();
避免这种丑陋情况的最佳方法是什么?
答案 0 :(得分:5)
并非真正危险(多亏了先发制人的多任务处理),但浪费资源。使用计数为1的CountDownLatch
,例如示例中的startSignal
。或者使用Object
的{{1}}和wait
/ notify
方法深入挖掘并实施您自己的等待机制。
答案 1 :(得分:3)
我比较了CPU的使用情况。
CPU使用率13-15%:
while(!isItHappened());
doSomethingAfterItHappend();
CPU使用率0-1%:
synchronized(itHappend) {
itHappened.wait();
}
doSomething();
所以第二段代码显然更好。非常感谢duckstep。