我有以下代码:
public static void main(String[] args) {
...
while(condition.continueListening()) {
}
log.info("Finished");
}
条件对象创建自己的线程,该条件满足一个条件后,使方法continueListening,以返回false。
问题是,我希望主线程在该方法返回false之前不结束,以及我实现它的方式,这是通过使用这种结构对CPU来说相当“困难”的,您是否知道其他任何内容更好的方法?
答案 0 :(得分:0)
什么是continueListening
检查?如果它只是一个随机状态,那么您真的没有一个好的选择,最好的办法是使线程休眠一会儿,例如在while循环中等待半秒钟。
但是,如果您可以更改continueListening
,则可以将其 block 阻止,直到事件发生并且事件应该继续。 Java为此提供了许多选择,其中一些可能是:
Thread.join()
等待其他线程退出。Object.wait()
,Object.notify()
。ExecutorService
和Future.get()
Future
和Promise
或BlockingQueue
手动进行操作。