如何解决RxJava3 RxImmediateSchedulerRule ExecutorScheduler公平参数
使用调度程序进行测试的RxJava规则为
import io.reactivex.Scheduler
import io.reactivex.android.plugins.RxAndroidPlugins
import io.reactivex.internal.schedulers.ExecutorScheduler
import io.reactivex.plugins.RxJavaPlugins
import org.junit.rules.TestRule
import org.junit.runner.Description
import org.junit.runners.model.Statement
import java.util.concurrent.Executor
class RxImmediateSchedulerRule : TestRule {
private val immediate = object : Scheduler() {
override fun createWorker(): Worker {
return ExecutorScheduler.ExecutorWorker(Executor { it.run() },true)
}
}
// private val immediate = Schedulers.trampoline()
override fun apply(base: Statement,description: Description): Statement {
return object : Statement() {
@Throws(Throwable::class)
override fun evaluate() {
RxJavaPlugins.setInitIoSchedulerHandler { immediate }
RxJavaPlugins.setInitComputationSchedulerHandler { immediate }
RxJavaPlugins.setInitNewThreadSchedulerHandler { immediate }
RxJavaPlugins.setInitSingleSchedulerHandler { immediate }
RxAndroidPlugins.setInitMainThreadSchedulerHandler { immediate }
try {
base.evaluate()
} finally {
RxJavaPlugins.reset()
RxAndroidPlugins.reset()
}
}
}
}
}
现在有了RxJava3
ExecutorScheduler.ExecutorWorker(Executor { it.run() },true,true)
此处的第二个参数称为fair
,但ExecutorScheduler
类中没有JavaDoc或对此参数的解释。谁是合理的参数,何时应该使用?
解决方法
在ExecutorScheduler类中没有JavaDoc或对此参数的解释
那是因为ExecutorScheduler
是一个内部类,不能直接使用。
在Schedulers.from()
的JavaDoc中解释了公平性。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。