可能这是一个基本问题,但想从这个论坛得到确认。
我有以下代码逻辑:
public Object method1() {
synchronized(this) {
method2();
method3();
method4();
}
method4()
是一项耗时的操作,我不必等待其完成。所以我写了一个spring方法拦截器,它将拦截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