我有以下 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()完成才能继续,并且由于复杂的原因我不会在这里讨论,我需要在单独的线程上启动它。如果有另一种可行的方法,那很好。