0
私は方法.fromAction()
によって作成Completable
における方法.timeout()
とエラー、発見:括弧内タイムアウト法はCompletable.fromAction(で実行壊すことができない)
Completable.fromAction(() -> {
System.out.println("start time: " + timeString());
Thread.sleep(10_000);
})
.timeout(3, TimeUnit.SECONDS)
.onErrorComplete()
.blockingAwait();
System.out.println("after time: " + timeString());
コードは、タイムアウトが3に設定し、10秒を実行します秒。ただし、実行は10秒後に終了します。これは、プログラムの出力です:
start time: 14:55
after time: 15:05
Process finished with exit code 0
質問:なぜ3秒後に休憩をしませ実行し、どのようにそれを修正するには?
'fromAction'の後に' subscribeOn(Schedulers.io()) 'を試してください。 – akarnokd
@akarnokd、ハハ、うまくいきます! :) しかし、なぜ? –
'timeout'はメインスレッドを中断することはできませんが、' Scheduler'で実行中のタスクを中断することができます。 – akarnokd