spring – Reactor Mono vs CompletableFuture
刚刚开始探索反应堆项目及其抽象Mono和Flux,并希望了解与java 8准系统CompletableFuture的基本差异. 这是一个简单的代码:
首先,CompletableFuture没有任何意外. supplyAsync通过ForkJoinPool安排执行函数,并且“End”行立即打印,程序终止,因为主线程在这里真的很短暂 – 正如预期的那样. 但Mono.fromCallable(…)阻止了那里的主线程.此外,在getData()函数中打印的线程名称是主线程.所以我看到顺序/阻塞行为而不是顺序/非阻塞(异步)行为.是因为我在同一个线程上应用了一个订阅函数,它是阻塞的吗?有人可以解释一下吗? 最佳答案
这正是似乎发生的事情. 这种特殊的行为让我感到惊讶,因为它不是大多数管道行为的方式.大多数管道都有这样或那样的一些操作,使管道异步. publishOn,subscribeOn是明显的例子,但也是 这暗示了关于反应式编程的一个非常重要的观点:管道不应该包含长阻塞调用.准备好反应性管道,并且当订阅处理事件而不阻塞时.因此,阻塞语句具有阻止整个执行的真正潜力.通过使用Scheduler,您可以将这些调用限制在特殊的ThreadPools中,从而控制它们的效果. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- kuangbin专题十六 KMP&&扩展KMP HDU1711 Number Se
- thinkPHP 3.2.3操作MongoDB指南
- delphi – 带有TEncoding.UTF8的TFile.ReadAllText省略了前
- vb6 – 强制模态窗体显示在任务栏中
- Delphi – 我可以使用NativeXml创建规范XML吗?
- groovy – Spock vs FitNesse
- 深层复制 – Perl 6是否有内置工具来制作嵌套数据结构的深层
- Delphi XE5 for Android (七)
- Delphi – 让Allen Bauer的TMulticastEvent工作
- 挖掘1亿用户利基市场需求:MDCC 2015信息无障碍专场议题揭晓