RxJava超时并杀死底层线程

时间:2020-10-12 09:42:56

标签: timeout rx-java rx-java2

我们正在对timeout()进行简单的Flowable调用。

Flowable.fromCallable(() -> callToExternalService())
       .timeout(500, TimeUnit.MILLISECONDS)

超时本身可以正常工作,但是我们注意到,超时调用callToExternalService(即使它被丢弃了)有时也可能要花几分钟,即使它正在运行,它也不会释放线程,直到它被释放为止。完全完成,这样做浪费资源。在我们的情况下,如果调用超时,则可以立即杀死线程,因此它不应该等待调用结束。

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

.subscribeOn(Schedulers.io())之前添加.timeout(或其他一些调度程序)