美文网首页通信机制技术干货程序员
浅显易懂之线程模型的演变

浅显易懂之线程模型的演变

作者: sun4lower | 来源:发表于2017-03-02 16:16 被阅读105次

本文旨在通过一个实际工作中例子让大家理解线程模型的演变,从而对 Netty 的模型有一个粗略的印象,面向的是想初步了解 Netty 原理的读者,而并不关心具体的执行细节和相关术语的描述。

单线程

单线程映射到我们的实际工作中就是由一个人完成所有的工作,如下图所示:

A 自己独立的完成全部的Job

多线程

多线程映射到我们的工作中就是多个人共同协作完成工作,如下图所示:

A、B、C 三人工作完成工作,每个人会分到具体的工作去执行,较之单线程,执行效率提高。

线程池

多个 Worker(A、B、C等)已经准备好去完成即将到来的Job,当Job 1过来的时候,会从线程池中选择一个线程也就是Worker(A)来完成这项任务,完成之后A仍然要回到线程池中,等待下一个工作的到来。

Reactor单线程模型

Reactor 的单线程模型映射到实际工作中如下图所示:

我们有一个Boss来接收具体的Job,然后Boss将具体接收到的Job分配给已经准备好的Worker,交给具体的Worker来完成最终的Job,但是如果Job非常多的时候,Boss的压力就会越来越大,所以Boss成为了性能的瓶颈,而下面提到的Reactor多线程模型就是为了解决这个问题而产生的。

Reactor多线程模型

为了完善Reactor单线程模型,Reactor多线程模型进行了优化:

和Reactor单线程模型相比,Reactor多线程模型增加了一个从Manager pool选择Manager(相当于项目经理)的过程,即通过Manager来帮助Boss分配具体的Job给Worker,例如图中选择了M1,那么M1就会去完成选择Worker的工作,虚线代表选择了M2或者M3。

Netty的具体实现就类似于Reactor的多线程模型,而Spark现在Rpc的底层就是通过Netty来实现的。

至此本文的目的已经达到,如果想要更加详细的了解Netty的具体实现细节和NIO相关的知识可以参考如下文章:

Netty系列之Netty线程模型

并发编程网有关Netty的部分

Netty官方网站

Java NIO Tutorial

本文为原创,欢迎转载,转载请注明出处、作者,谢谢!

相关文章

  • 浅显易懂之线程模型的演变

    本文旨在通过一个实际工作中例子让大家理解线程模型的演变,从而对 Netty 的模型有一个粗略的印象,面向的是想初步...

  • Reactor线程模型及其在Netty中的应用

    什么是Reactor线程模型 Java中线程模型大致可以分为: 单线程模型 多线程模型 线程池模型(executo...

  • SQLite 线程安全和并发

    SQLite 与线程 SQLite是线程安全的。 线程模型 SQLite支持如下三种线程模型 单线程模型这种模型下...

  • Reactor线程模型【原理笔记】

    前言 Reactor模型是基于事件驱动的线程模型,可以分为Reactor单线程模型、Reactor多线程模型、主从...

  • Netty篇:Reactor线程模型和NioEventLoop,

    Reactor线程模型 Reactor模式是一种典型的事件驱动的编程模型,主要有单线程模型,多线程模型以及主从线程...

  • Tomcat NIO 线程模型分析

    Tomcat7线程模型 tomcat 的nio 线程模型也是reactor 模型,由accept 线程负责接受连接...

  • 线程模型的3种实现

    线程的实现模型主要有3种:内核级线程模型、用户级线程模型和混合型线程模型。它们之间最大的区别在于线程与内核调度实体...

  • 一文搞懂Go 的并发调度模型

    线程模型 在细说 Go 的调度模型之前,先来说说一般意义的线程模型。线程模型一般分三种,由用户级线程和 OS 线程...

  • Netty 线程模型

    线程模型: 单线程模型:该Server线程要处理读请求,写请求,全部在一个线程中. Reactor线程模型[htt...

  • 线程池

    线程是调度CPU资源的最小单位,线程模型分为KLT模型和ULT模型,Java采用的是KLT模型,java线程与OS...

网友评论

    本文标题:浅显易懂之线程模型的演变

    本文链接:https://www.haomeiwen.com/subject/mlkkgttx.html