如何在RxJava上使用线程?

时间:2016-03-19 07:09:06

标签: java multithreading rx-java

        Observable.create(new Observable.OnSubscribe<Integer>() {

        public void call(final Subscriber<? super Integer> obs) {
            new Thread(){
                public void run(){
                    obs.onNext(1);
                }
            }.start();
            new Thread(){
                public void run(){
                    obs.onNext(2);
                }
            }.start();
            new Thread(){
                public void run(){
                    obs.onNext(3);
                }
            }.start();
            obs.onCompleted();
        }
    }).subscribe(new Subscriber<Integer>(){

        public void onCompleted() {
            System.out.println("Complete");

        }

        public void onError(Throwable arg0) {
            // TODO Auto-generated method stub

        }

        public void onNext(Integer arg0) {
            System.out.println(arg0);
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

    });

如您所见,我想使用RxJava对Java进行多线程处理

我在Google上研究过很多资源,但大多数是针对Android的

有人能说出实施它的最简单方法吗?

我认为我的代码有点:&lt;

1 个答案:

答案 0 :(得分:3)

嗯,有点不清楚你在问什么,但是至少粗略地读一下Observable类是值得的,因为它有很多让你的生活更轻松的方法。例如,您的代码大致转换为:

 Observable
 .just(1,2,3)
 .subscribeOn(Schedulers.io())
 .zipWith(Observable.interval(1000,1000,TimeUnit.milliseconds),
     (item, pos) -> item)
 .doOnCompleted(() -> System.out.println("Complete");
 .subscribe(item -> System.out.println(item));

但是,你首先需要明确你想做什么 - 你能说出来吗?