2016-03-19 13 views
1
 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(); 
      } 
     } 

    }); 

見ての通り、私は誰が何であるかを伝えることができます私はGoogleで多くのリソースを研究してきたが、それらのほとんどは、AndroidRxJavaでスレッディングを使用するには?

のためのものであるRxJava

でJavaをマルチスレッドをしたいですそれを実装する最も簡単な方法は?

私は私のコードは少しだと思う:<

答えて

3

まあ、それはあなたが求めているものを少しは不明だが、それはたくさん持っているとして、それは、少なくとも観察可能なクラスの上にぞんざい読み取りを持っている価値がありますあなたの人生を楽にする方法の例えば、あなたのコードは、大体に変換:

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

ただし、最初にあなたがしたい何をすべきかを明確にする必要があります - あなたは言葉にそれを置くことができますか?

+0

多くのタスクを同時に開始したいと思いますが、完了までに時間がかかることがあります。私はちょうどRxJavaでマルチスレッドを実装する方法を知りたいです – DumDumGenius

+0

同時に1,2,3を表示したい〜 – DumDumGenius

+0

その後、 'zipWith'呼び出しをスキップします。 –