package com.g.app.android2;
import io.reactivex.rxjava3.core.Observable;
import io.reactivex.rxjava3.core.ObservableSource;
import io.reactivex.rxjava3.core.Scheduler;
import io.reactivex.rxjava3.functions.Action;
import io.reactivex.rxjava3.functions.Consumer;
import io.reactivex.rxjava3.functions.Function;
import io.reactivex.rxjava3.schedulers.Schedulers;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class TestMain {
public static void main(String argv[]) throws InterruptedException {
String TAG = "";
int threadNum = Runtime.getRuntime().availableProcessors() + 1;
final ExecutorService executorService = Executors.newFixedThreadPool(5);//5个线程并发执行任务
final Scheduler scheduler = Schedulers.from(executorService);
final long startTime = System.currentTimeMillis();
Observable.range(1, 20)
.flatMap(new Function<Integer, ObservableSource<String>>() {
@Override
public ObservableSource<String> apply(Integer integer) throws Exception {
return Observable.just(integer)
.subscribeOn(scheduler)// shcedulers.
.map(new Function<Integer, String>() {
@Override
public String apply(Integer integer) throws Exception {
Thread.sleep(integer * 1000); // do something.
Log.d("", Thread.currentThread().getName());
return integer.toString();
}
});
}
})
.doFinally(() -> {
Log.d(TAG, "Finally.");
executorService.shutdown();
})
.subscribe(s -> {// output. 用subject转换
long time = (System.currentTimeMillis()-startTime)/1000;
Log.d(TAG, "Next: " + s + ", timeNow = " + time);
}, throwable -> Log.d(TAG, "Error."), () -> Log.d(TAG, "Complete."));
}
private static class Log {
public static void d(String tag, String msg) {
System.out.println(tag + ", " + msg);
}
}
// "America/Los_Angeles" UTC-8
public static void getTimeZoneTimeNow(String timeZoneId) {
}
}
E application registeration exception
java.lang.InterruptedException
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:442)
at android.bluetooth.le.BluetoothLeScanner$BleScanCallbackWrapper.startRegistration(BluetoothLeScanner.java:439)
at android.bluetooth.le.BluetoothLeScanner.startScan(BluetoothLeScanner.java:290)
at android.bluetooth.le.BluetoothLeScanner.startScan(BluetoothLeScanner.java:155)
at com.tplink.libtapoiotble.ble.blescan.IoTBLEScanClient.realScanBLEDevice(IoTBLEScanClient.java:266)
at com.tplink.libtapoiotble.ble.blescan.IoTBLEScanClient.lambda$scheduleBLEScanTask$2$IoTBLEScanClient(IoTBLEScanClient.java:95)
at com.tplink.libtapoiotble.ble.blescan.-$$Lambda$IoTBLEScanClient$iNbPuhbcnVapdpdoQ_AMnPaUzSw.accept(Unknown Source:4)
at io.reactivex.internal.observers.DisposableLambdaObserver.onSubscribe(DisposableLambdaObserver.java:42)
at io.reactivex.internal.operators.observable.ObservableTake$TakeObserver.onSubscribe(ObservableTake.java:55)
at io.reactivex.internal.operators.observable.ObservableInterval.subscribeActual(ObservableInterval.java:41)
at io.reactivex.Observable.subscribe(Observable.java:12284)
at io.reactivex.internal.operators.observable.ObservableTake.subscribeActual(ObservableTake.java:30)
at io.reactivex.Observable.subscribe(Observable.java:12284)
at io.reactivex.internal.operators.observable.ObservableDoOnLifecycle.subscribeActual(ObservableDoOnLifecycle.java:33)
at io.reactivex.Observable.subscribe(Observable.java:12284)
at io.reactivex.Observable.subscribe(Observable.java:12270)
at io.reactivex.Observable.subscribe(Observable.java:12229)
at com.tplink.libtapoiotble.ble.blescan.IoTBLEScanClient.scheduleBLEScanTask(IoTBLEScanClient.java:97)
at com.tplink.libtapoiotble.ble.blescan.IoTBLEScanClient.lambda$startBLEScan$0$IoTBLEScanClient(IoTBLEScanClient.java:76)
at com.tplink.libtapoiotble.ble.blescan.-$$Lambda$IoTBLEScanClient$GrSe3KxKh99r2P7VByw9BweU_So.apply(Unknown Source:4)
at io.reactivex.internal.operators.observable.ObservableScalarXMap$ScalarXMapObservable.subscribeActual(ObservableScalarXMap.java:142)
at io.reactivex.Observable.subscribe(Observable.java:12284)
at io.reactivex.internal.operators.observable.ObservableOnErrorReturn.subscribeActual(ObservableOnErrorReturn.java:31)
at io.reactivex.Observable.subscribe(Observable.java:12284)
at io.reactivex.internal.operators.observable.ObservableDoFinally.subscribeActual(ObservableDoFinally.java:43)
at io.reactivex.Observable.subscribe(Observable.java:12284)
at io.reactivex.internal.operators.observable.ObservableSubscribeOn$SubscribeTask.run(ObservableSubscribeOn.java:96)
at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:608)
at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66)
at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:920)
Rxjava并发任务
于 2024-05-10 21:50:21 首次发布