问题0028 - 线程切换

188 阅读1分钟

1.文章

2.总结

RxJava

1. 单纯开启1个新线程执行一段逻辑,不涉及向其他线程继续传输数据
RxJava
Observable.create((ObservableOnSubscribe<String>) emitter -> {
            //指定逻辑
        }).subscribeOn(Schedulers.io()).subscribe();
        
直接使用Thread:
new Thread(() -> {
    //指定逻辑
}).start();
  • 从代码量看,直接使用Thread其实更简洁
2. 开启新线程A生产1个数据T,将T传输给另一个线程B使用
  • 最常用有2种形式
Observable.create((ObservableOnSubscribe<String>) emitter -> {
    //指定逻辑
    //onNext
    emitter.onNext("111");
    //onComplete
    emitter.onComplete();
}).subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe(new Observer<String>() {
            @Override
            public void onSubscribe(@NonNull Disposable d) {
            }
            @Override
            public void onNext(@NonNull String s) {
                //这里接收到线程A生产的数据T/"111"
            }
            @Override
            public void onError(@NonNull Throwable e) {
            }
            @Override
            public void onComplete() {
            }
        });
Observable.just(1)
        .map(integer -> "newStr")
        .subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribe(new Consumer<Object>() {
            @Override
            public void accept(Object o) throws Exception {
                //这里接收到线程A生产的数据T/"newStr"
            }
        });

3.实践