package rx;import io.reactivex.rxjava3.annotations.NonNull;import io.reactivex.rxjava3.core.Observable;import io.reactivex.rxjava3.core.ObservableSource;import io.reactivex.rxjava3.core.Observer;import io.reactivex.rxjava3.disposables.Disposable;import io.reactivex.rxjava3.functions.Function;import java.util.concurrent.Callable;import java.util.concurrent.CompletableFuture;import java.util.concurrent.TimeUnit;public class RxJavaSequentialTasks {static Disposable disposable;public static void main(String[] args) {Observable.fromArray(1, 2, 3, 4, 5).flatMap(new Function<Integer, ObservableSource<Integer>>() {@Overridepublic ObservableSource<Integer> apply(Integer integer) throws Throwable {return Observable.fromCallable(new Callable<Integer>() {@Overridepublic Integer call() throws Exception {// Thread.sleep(1000);int i = get().get(1000, TimeUnit.MILLISECONDS);return i;}});}}).subscribe(new Observer<Integer>() {@Overridepublic void onSubscribe(@NonNull Disposable d) {disposable = d;}@Overridepublic void onNext(@NonNull Integer s) {System.out.println("onNext:" + s);if (s == 2) {disposable.dispose();}}@Overridepublic void onError(@NonNull Throwable e) {System.out.println(e.getMessage());}@Overridepublic void onComplete() {System.out.println("onComplete");}});}private static CompletableFuture<Integer> get() {CompletableFuture<Integer> completableFuture = new CompletableFuture<>();final int[] i = {0};new Thread(new Runnable() {@Overridepublic void run() {try {Thread.sleep(500);} catch (InterruptedException e) {throw new RuntimeException(e);}i[0] = i[0] + 2;completableFuture.complete(i[0]);}}).start();return completableFuture;}private static String longRunningTask(int number) {// 模拟耗时操作,比如网络请求或计算try {Thread.sleep(100); // 假设每个任务耗时1秒} catch (InterruptedException e) {Thread.currentThread().interrupt();}return "Task " + number + " completed";}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。