我有以下 Java 代码:
final Future future = exeService.submit(
new Runnable() {
public void run() {
myObject.doSomething();
}
}
);
future.get();
exeService
的一个实例在哪里
java.util.concurrent.ExecutorService
问题是myObject.doSomething()
永远不会返回,因此future.get()
永远不会返回。
但是,如果我将调用替换为这样submit
的调用execute
:
exeService.execute(
new Runnable() {
public void run() {
myObject.doSomething();
}
}
);
调用myObject.doSomething()
确实返回。我不知道这是否重要,但它doSomething()
是一种void
方法。
为什么使用时doSomething()
完成,使用execute
时却没有submit
?
另外,我不需要使用Future.get()
; 这似乎是最自然的方式。(我也遇到了同样的问题CountdownLatch
。)关键是我需要等待doSomething()
完成才能继续,并且由于复杂的原因我不会在这里讨论,我需要在单独的线程上启动它。如果有另一种可行的方法,那很好。