RxJava3 RxImmediateSchedulerRule ExecutorScheduler 公平参数
RxJava3 RxImmediateSchedulerRule ExecutorScheduler fair parameter
用于使用调度程序进行测试的 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
class 中没有对此参数的 JavaDoc 或解释。什么是公平参数,应该在什么时候使用?
no JavaDoc or explanation for this parameter in ExecutorScheduler class
那是因为 ExecutorScheduler
是一个内部 class 不应该或不希望直接使用。
公平性在 Schedulers.from()
的 JavaDocs 中有解释。
用于使用调度程序进行测试的 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
class 中没有对此参数的 JavaDoc 或解释。什么是公平参数,应该在什么时候使用?
no JavaDoc or explanation for this parameter in ExecutorScheduler class
那是因为 ExecutorScheduler
是一个内部 class 不应该或不希望直接使用。
公平性在 Schedulers.from()
的 JavaDocs 中有解释。