①Java实现
package reactor;
import java.util.Observable;
public class ObserverDemo extends Observable{
public static void main(String[] args) {
ObserverDemo observer=new ObserverDemo();
//添加观察者
observer.addObserver((o,arg)->{
System.out.println("改变");
});
observer.addObserver((o,arg)->{ //等待通知
System.out.println("收到通知,准备改变");
});
observer.setChanged(); //检测是否数据发生变化
observer.notifyObservers();//通知
}
}
②基于Flow
package com.atguigu.demo;
import java.util.concurrent.Flow;
public class Main {
public static void main(String[] args) {
Flow.Publisher<String> publisher = subscriber -> {
subscriber.onNext("1"); // 1
subscriber.onNext("2");
subscriber.onError(new RuntimeException("出错")); // 2
// subscriber.onComplete();
};
publisher.subscribe(new Flow.Subscriber<>() {
@Override
public void onSubscribe(Flow.Subscription subscription) {
subscription.cancel();
}
@Override
public void onNext(String item) {
System.out.println(item);
}
@Override
public void onError(Throwable throwable) {
System.out.println("出错了");
}
@Override
public void onComplete() {
System.out.println("publish complete");
}
});
}
}