首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Schedulers.newElastic和Schedulers.elastic方法有什么区别?

Schedulers.newElastic和Schedulers.elastic方法有什么区别?
EN

Stack Overflow用户
提问于 2018-01-04 12:12:35
回答 1查看 6.6K关注 0票数 5

我正在处理Flux和Mono,并在多线程环境中使用它们,并使用提供工作线程的调度器。

有许多选项可以使用弹性、并行和newElastic启动调度。

下面是我使用的代码:

代码语言:javascript
复制
    System.out.println("------ elastic ---------  ");
    Flux.range(1, 10)
      .map(i -> i / 2)
      .publishOn(Schedulers.elastic()).log()
      .blockLast();
    
    System.out.println("------ new elastic ---------  ");
    Flux.range(1, 10)
      .map(i -> i / 2).log()
      .publishOn(Schedulers.newElastic("my")).log()
      .blockLast();

它们都有相同的文档:

动态创建基于ExecutorService的工作人员并缓存线程池的调度程序,一旦Worker被关闭,就重用它们。 创建的线程池的最大数目是无限的。 未使用线程池的默认存活时间为60秒,请使用适当的工厂推送不同的值。 此调度程序不能重新启动。

这是他们两个人的日志:

代码语言:javascript
复制
------ elastic ---------  
[ INFO] (main) | onSubscribe([Fuseable] FluxPublishOn.PublishOnSubscriber)
[ INFO] (main) | request(unbounded)
[ INFO] (elastic-2) | onNext(0)
[ INFO] (elastic-2) | onNext(1)
[ INFO] (elastic-2) | onNext(1)
[ INFO] (elastic-2) | onNext(2)
[ INFO] (elastic-2) | onNext(2)
[ INFO] (elastic-2) | onNext(3)
[ INFO] (elastic-2) | onNext(3)
[ INFO] (elastic-2) | onNext(4)
[ INFO] (elastic-2) | onNext(4)
[ INFO] (elastic-2) | onNext(5)
[ INFO] (elastic-2) | onComplete()
------ new elastic ---------  
[ INFO] (main) | onSubscribe([Fuseable] FluxMapFuseable.MapFuseableSubscriber)
[ INFO] (main) | onSubscribe([Fuseable] FluxPublishOn.PublishOnSubscriber)
[ INFO] (main) | request(unbounded)
[ INFO] (main) | request(256)
[ INFO] (main) | onNext(0)
[ INFO] (main) | onNext(1)
[ INFO] (my-4) | onNext(0)
[ INFO] (main) | onNext(1)
[ INFO] (my-4) | onNext(1)
[ INFO] (main) | onNext(2)
[ INFO] (my-4) | onNext(1)
[ INFO] (my-4) | onNext(2)
[ INFO] (main) | onNext(2)
[ INFO] (main) | onNext(3)
[ INFO] (my-4) | onNext(2)
[ INFO] (main) | onNext(3)
[ INFO] (my-4) | onNext(3)
[ INFO] (my-4) | onNext(3)
[ INFO] (main) | onNext(4)
[ INFO] (my-4) | onNext(4)
[ INFO] (main) | onNext(4)
[ INFO] (main) | onNext(5)
[ INFO] (my-4) | onNext(4)
[ INFO] (main) | onComplete()
[ INFO] (my-4) | onNext(5)
[ INFO] (my-4) | onComplete()

这两者有什么区别呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-04 12:20:38

elastic()函数返回一个共享调度程序实例。这意味着对此函数的多次调用将返回相同的调度程序。

new为前缀的函数将始终创建一个新的调度器实例。

在这里检查Schedulers类的文档:https://projectreactor.io/docs/core/release/api/

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48095075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档