先来看代码:
[code="java"]@Controller
public class T1 implements MethodInterceptor {
private Object obj;
@Autowired
private SimpleAsyncTaskExecutor task;
public Object invoke(final MethodInvocation mi) throws Throwable {
task.execute(new Runnable(){
public void run() {
try {
obj = mi.proceed(); // 这里我需要把执行的结果传入到T1类,我定义了一个Object对象,可是值是传不出来的
} catch (Throwable e) {
e.printStackTrace();
}
}
});
return obj; // 刚才传的值这里要用
}
}[/code]
MethodInterceptor是我实现了spring中一个接口,关于aop的。
SimpleAsyncTaskExecutor是spring中的一个类,用于实现对并发的总数做限制的。
上面我写的有注释,内部类执行的值怎么才能传出来给T1类使用呢?
[b]问题补充:[/b]
@RednaxelaFX,非常感谢,按照你的方法,问题解决了:
[code="java"]@Controller
public class T1 implements MethodInterceptor {
@Autowired
private SimpleAsyncTaskExecutor executor;
public Object invoke(final MethodInvocation mi) throws Throwable {
FutureTask<Object> task = new FutureTask<Object>(new Callable<Object>() {
public Object call() {
try {
return mi.proceed();
} catch (Throwable e) {
return null;
}
}
});
executor.execute(task);
return task.get();
}
}[/code]