响应式编程入门案例_reactivex

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){}
			;  
	}

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值