我正在开发一个使用某些阻塞 API 的 Java 项目。
我想使用异步编程和回调,这样我就不必在等待结果时阻塞。我已经研究过使用 Java Future
,但我认为我可以使用它的唯一方法是调用get()
会阻塞的方法。我也愿意使用其他方式进行异步编程。
我当前的代码如下所示。
Object res = blockingAPI();
sendToClient(res);
如果我要使用Future
,我会这样做。但我的理解get()
是阻塞。
private final int THREADS = Runtime.getRuntime().availableProcessors();
private ExecutorService executor = Executors.newFixedThreadPool(THREADS);
public void invokeApi() {
Future<Object> future = executor.submit(new Callable<Object>() {
public Object call() {
return result;
}
});
Object result = future.get(5, TimeUnit.SECONDS)
}
我怎样才能实现这一点,以便函数get()
基本上由回调处理,当结果可用时自动调用该回调?