一、说明:
1、装饰Concurrent包里的ExecutorService
ListeningExecutorService guavaExecutor = MoreExecutors
.listeningDecorator(Executors.newSingleThreadExecutor());
2、ListenableFuture的创建
final ListenableFuture<T> listenableFuture = guavaExecutor
.submit(new Callable<T>() {
。。。。。。
});
3、ListenableFuture注册监听器,即异步调用完成时会在指定的线程池中执行注册的监听器
listenableFuture.addListener(new Runnable() {
。。。。。。
}, Executors.newSingleThreadExecutor());
4、Futures方法进行Callback
Futures.addCallback(listenableFuture2, new FutureCallback<T>() {
@Override
public void onSuccess(Tresult) {
。。。。。。
}
@Override
public void onFailure(Throwable t) {
}
}
);
二、代码:
package com.wll.guava.concurrent;
import com.google.common.util.concurrent.*;
import java.util.concurrent.*;
/**
* 使用guava实现异步回调 {@link java.util.concurrent.Future}
* {@link com.google.common.util.concurrent.ListenableFuture}
* {@link com.google.common.util.concurrent.FutureCallback}
*
* @author landon
*/
public class FutureCallbackExample {
public static void main(String[] args) throws Exception {
nativeFuture();
Thread.sleep(3000L);
gu