Reacor在进行线程切换(subscribeOn/publishOn)以及并行计算(runOn)都会使用Scheduler。
通过前面的源码分析,我们知道对于每次切换,实际上都会先基于选择的Scheduler,创建一个对应的Worker,真正异步执行是通过调用Worker#schedule()实现的。
本文主要分析各种Scheduler实现原理。
立即调度-ImmediateScheduler
通过Schedulers.immediate()创建,在调用者线程立即执行任务,底层就是直接调用run()方法执行。
单线程池调度-SingleScheduler
通过Schedulers.single()创建,底层是一个单线程池,将任务交给改单线程池执行。
通过
Schedulers.newSingle("test")形式,会为创建名称为test的单线程池。
弹性调度-ElasticScheduler
通过Schedulers.elatic()创建,底层实现比较复杂,我们详细分析一下。
代码示例
@Test
public void testElastic() {
Scheduler scheduler = Schedulers.elastic();
for (int i = 0; i < 10; i++) {
scheduler.schedule(new Task(i, 1000));

本文深入探讨了Reactor中各种Scheduler的工作原理,包括立即调度、单线程池调度、弹性调度及其有边界的版本,以及并行调度和委派调度等。通过分析不同Scheduler的特点,帮助理解Reactor如何高效地管理异步任务。
最低0.47元/天 解锁文章
387

被折叠的 条评论
为什么被折叠?



