- Listener接口
public interface Listener {
public void operationComplete(int x);
}
- 异步执行时返回的Future对象
import java.util.ArrayList;
import java.util.List;
public class FutureOperationComplete {
private List<Listener> listeners=new ArrayList();
public void addListener(Listener listener){
listeners.add(listener);
}
public List<Listener> getListeners() {
return listeners;
}
}
- 调用demo
public class FutureListenerDemo {
//模拟耗时异步操作的方法
public FutureOperationComplete doSomething(){
FutureOperationComplete futureOperationComplete=new FutureOperationComplete();
new Thread(()->{
System.out.println("异步执行中!");
try {
//模拟耗时异步操作
Thread.sleep(5000);
//操作完成后回调并传参
for (Listener listener:futureOperationComplete.getListeners()){
listener.operationComplete(1);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}).start();
return futureOperationComplete;
}
public static void main(String[] args) {
FutureListenerDemo futureListenerDemo=new FutureListenerDemo();
//执行耗时异步操作的方法
FutureOperationComplete futureOperationComplete = futureListenerDemo.doSomething();
//监听异步操作完成
futureOperationComplete.addListener((x)->{
System.out.println("异步执行完毕!传来的参数为:"+x);
});
System.out.println("主线程继续执行");
}
}