私は次の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()
複雑な理由から、ここでは説明しません。別のスレッドで起動する必要があります。これを行う別の方法が機能する場合は、それで問題ありません。