import io.reactivex.Observable;
import io.reactivex.ObservableEmitter;
import io.reactivex.ObservableOnSubscribe;
import io.reactivex.Observer;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Consumer;
import io.reactivex.schedulers.Schedulers;
/**
*
* 1.马士兵入门案例:https://ke.qq.com/course/429389?quicklink=1
* 2.博客园实例: https://www.cnblogs.com/jiangming-blogs/p/12127183.html
* 3.依赖: implementation "io.reactivex.rxjava2:rxjava:2.2.12"
*/
/*
* 1. ReactiveX: 微软给的定义是,Rx是一个函数库,让开发者可以利用可观察序列和LINQ风格查询操作符来编写异步和基于事件的程序,
* 使用Rx,开发者可以用Observables表示异步数据流,用LINQ操作符查询异步数据流, 用Schedulers参数化异步数据流的并发处理,
* Rx可以这样定义:Rx = Observables + LINQ + Schedulers。
* ReactiveX.io给的定义是,Rx是一个使用可观察数据流进行异步编程的编程接口,ReactiveX结合了观察者模式、迭代器模式和函数式编程的精华。
*/
public class RxJavaDemo {
public static void demo1() {
Observable<String> observable = Observable.create(new ObservableOnSubscribe<String>() {
@Override
public void subscribe(ObservableEmitter<String> emitter) throws Exception {
emitter.onNext("hello");
emitter.onNext("www.baidu.com");
emitter.onNext("let's study");
}
});
Consumer<String> consumer = new Consumer<String>() {
@Override
public void accept(String s) throws Exception {
System.out.println(Thread.currentThread().getName() + "== consumer ==" + s);
}
};
observable.subscribe(consumer);
}
public static void demo2() {
Observable.create(new ObservableOnSubscribe<String>() {
@Override
public void subscribe(ObservableEmitter<String> emitter) throws Exception {
emitter.onNext("hello");
emitter.onNext("www.baidu.com");
emitter.onNext("let's study");
}
}).observeOn(Schedulers.newThread()).subscribe(new Consumer<String>() {
@Override
public void accept(String s) throws Exception {
System.out.println(Thread.currentThread().getName() + "== consumer ==" + s);
}
});
}
public static void demo3() {
Observable.create(new ObservableOnSubscribe<String>() {
@Override
public void subscribe(ObservableEmitter<String> emitter) throws Exception {
emitter.onNext("hello");
emitter.onNext("www.baidu.com");
emitter.onNext("let's study");
}
}).subscribe(new Observer<String>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(String s) {
System.out.println(Thread.currentThread().getName() + "== observer ==" + s);
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
}
public static void main(String[] args) {
System.out.println("demo1");
demo1();
System.out.println("demo2");
demo2();
System.out.println("demo3");
demo3();
for (;;) // while(true){}
;
}
}