首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何与线程一起工作的反应堆模式

如何与线程一起工作的反应堆模式
EN

Stack Overflow用户
提问于 2018-04-16 02:35:55
回答 1查看 2.9K关注 0票数 4

我开始阅读Vert.x框架文档,但我不明白它是如何工作的,也不知道什么是反应堆模式,我阅读了本文中的https://dzone.com/articles/understanding-reactor-pattern-thread-based-and-eve,并注意到,与基于servlet的一般(one request one thread)方法不同,反应堆模式使用event-driven architecture,其中单线程名为event loop将请求放入某种作业队列,并提供了一个处理程序,一旦任务完成,处理程序中的代码将由该事件循环执行,所以金科玉律是--不要阻止事件循环。

我不明白的是,从文章中看:

代码语言:javascript
复制
Those handlers/callbacks may utilize a thread pool in multi-core environments.

因此,处理程序使用线程池,该池与标准线程池(例如Servlet's container TOMCAT )有何不同。如果这两个概念都使用线程池来管理请求,那么在Http server情况下,这两个概念是如何不同的。

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-16 10:37:09

忘了那篇DZone文章吧。忘了反应堆模式吧。学习异步过程调用

有两种方法可以将计算机中的所有工作分解为各个部分:线程和任务(在Java中是Runnable)。任务准备就绪时在线程池上执行。当它们还没有准备好时,它们就不会占用线程的庞大堆栈,而且我们可以负担得起单个JVM实例中有数百万个任务,而单个JVM实例中有10000个线程是有问题的。

任务的主要问题是当任务需要还没有准备好的数据时(其他任务没有计算,或者还没有通过网络到达)。在线程世界中,等待数据的线程执行像inputsream.read()这样的阻塞操作,但是任务不允许这样做,否则它们会占用线程池中太多的线程,并且基于任务编程的所有优点都会丢失。因此,任务增加了一些机制,这些机制可以在所有参数到达时将该任务提交到线程池。具有这种机制的任务称为异步过程调用。所有事件驱动的体系结构都是异步过程调用的变体: Vert.x、RxJava、Project反应堆、Akka Actors等,它们只是假装是原创的,而不是总是在谈论这个问题。

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

https://stackoverflow.com/questions/49848900

复制
相关文章

相似问题

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