RxJava - Berechnungsplaner

Die Schedulers.computation () -Methode erstellt einen Scheduler und gibt ihn für die Rechenarbeit zurück. Die Anzahl der zu planenden Threads hängt von den im System vorhandenen CPUs ab. Pro CPU ist ein Thread zulässig. Am besten für Event-Loops oder Callback-Operationen.

Schedulers.computation () Beispiel

Erstellen Sie das folgende Java-Programm mit einem beliebigen Editor Ihrer Wahl, z. B. in C: \> RxJava.

ObservableTester.java

import java.util.Random;

import io.reactivex.Observable;
import io.reactivex.schedulers.Schedulers;

public class ObservableTester  {
   public static void main(String[] args) throws InterruptedException {
      Observable.just("A", "AB", "ABC")
         .flatMap(v -> getLengthWithDelay(v)
         .doOnNext(s -> System.out.println("Processing Thread " 
            + Thread.currentThread().getName()))
         .subscribeOn(Schedulers.computation()))
         .subscribe(length -> System.out.println("Receiver Thread " 
            + Thread.currentThread().getName() 
            + ", Item length " + length));

         Thread.sleep(10000);
   }
   protected static Observable<Integer> getLengthWithDelay(String v) {
      Random random = new Random();
      try {
         Thread.sleep(random.nextInt(3) * 1000);
         return Observable.just(v.length());
      } catch (InterruptedException e) {
         e.printStackTrace();
      }
      return null;
   }
}

Überprüfen Sie das Ergebnis

Kompilieren Sie die Klasse mit javac Compiler wie folgt -

C:\RxJava>javac ObservableTester.java

Führen Sie nun den ObservableTester wie folgt aus:

C:\RxJava>java ObservableTester

Es sollte die folgende Ausgabe erzeugen -

Processing Thread RxComputationThreadPool-1
Receiver Thread RxComputationThreadPool-1, Item length 1
Processing Thread RxComputationThreadPool-2
Receiver Thread RxComputationThreadPool-2, Item length 2
Processing Thread RxComputationThreadPool-3
Receiver Thread RxComputationThreadPool-3, Item length 3