是否有任何好的示例可以开始使用java同步方法调用。我有两个方法a和b,必须异步调用b。有什么建议吗?
答案 0 :(得分:1)
这是一个很大的话题,有很多陷阱。但是,您可以将方法包装在Callable<T>
并将其提交到ExecutorService.submit
,从而获得良好的开端。这将返回Future<T>
,其中包含方法get()
。最后一个方法返回T
,但直到Callable<T>
完成。
例如,假设foo.b()
返回String
。你会做类似的事情:
Callable<String> asyncB = new Callable<String>() {
@Override
public String call() {
foo.b();
}
};
Future<String> futureB = myExecutorService.submit(asyncB);
// asyncB will now execute on a separate thread,
// which is managed by the ExecutorService
foo.a(); // synchronous call
String resultB = futureB.get();
如果您使用的是Java 8,那么第一位可以是:
Callable<String> asyncB = () -> foo.b();
答案 1 :(得分:0)
如果您有任何机会使用Spring,他们都有出色的异步支持。
http://docs.spring.io/spring/docs/3.0.x/reference/scheduling.html