Project Reactor源码阅读-Scheduler

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

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));
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值