addListener()和addCallback()是Google Guava库中ListenableFuture接口所提供的两种不同的添加回调函数的方式。
addListener()方法允许我们向ListenableFuture对象添加一个普通的回调函数,该函数将在Future完成时被调用。该方法接受一个Runnable对象作为参数,当Future完成时将被调用。下面是一个使用addListener()的示例代码:
ListenableFuture future = ...;
future.addListener(() -> {
try {
Integer result = future.get();
// 处理结果
} catch (Exception e) {
// 处理异常
}
}, executor);
addCallback()方法是addListener()的一个更高级别的替代方法,该方法允许我们指定成功回调和失败回调函数。成功回调函数将在Future成功完成时被调用,而失败回调函数将在Future完成但出现异常时被调用。下面是一个使用addCallback()的示例代码:
ListenableFuture future = ...;
Futures.addCallback(future, new FutureCallback() {
@Override
public void onSuccess(Integer result) {
// Future成功完成时调用
}
@Override
public void onFailure(Throwable t) {
// Future完成但出现异常时调用
}
}, executor);
需要注意的是,addListener()和addCallback()方法都需要一个Executor对象作为参数,用于在回调函数中执行逻辑。可以根据需要选择合适的Executor对象,比如使用线程池来执行回调函数。