これは基本的な質問かもしれませんが、このフォーラムから確認を得たいと思っています。
私は以下のコードロジックを持っています:
public Object method1() {
synchronized(this) {
method2();
method3();
method4();
}
method4()
時間のかかる操作であり、完了するまで待つ必要はありません。method4
そこで、呼び出しをインターセプトして別のスレッドで実行するスプリング メソッド インターセプターを作成しました。ここで私の質問は、メソッド 4 の実行が開始された直後にメソッド 1 が返されるかどうかです。
以下はインターセプターのコードです。
public Object invoke(MethodInvocation methodInvocation) throws Throwable {
Future<Object> future = executorService.submit(new AsyncCallable(
methodInvocation));
Object retVal = null;
try {
retVal = future.get(10, TimeUnit.SECONDS);
} catch (Exception e) {
logger.error("Exception while running the method Async", e);
throw e;
}
return retVal;
} //AsyncCallable implements Callable interface