zoukankan      html  css  js  c++  java
  • 架构系列——架构师必备基础:并发、并行与多线程关系

    作者专注于Java、架构、Linux、小程序、爬虫、自动化等技术。 工作期间含泪整理出一些资料,微信搜索【程序员高手之路】,回复 【java】【黑客】【爬虫】【小程序】【面试】等关键字免费获取资料。技术交流、项目合作可私聊:shuhao-99999。

    目录

    前言

    一、并发

    1.并发图例

    2.并发概念

    二、并行

    1.并行图例

    2.并行概念

    三、多线程是并发吗?

    1.单处理器的情况

    2.多处理器的情况


    前言

    架构师需要了解并发与并行的区别,为高并发的处理打下基础

    一、并发

    1.并发图例

    上图中,每个黑体代表一个事件发生,各个事件之间的发生时间段互不相交!

    这是微观上来看不是同时发生的,也就是说同一时刻只能有一个事件发生

    但是一个事件结束得特别快,比如用时0.0001秒,那么从宏观上来看,可以把这几个事件当成是同时发生的。

    2.并发概念

    指在同一时刻只能有一条指令执行,但多个线程被快速的轮换执行,使得在宏观上具有多个线程同时执行的效果,但在微观上并不是同时执行的,只是把时间分成若干段,使多个线程快速交替的执行。

    二、并行

    1.并行图例

    上图中,每个黑体代表一个事件发生,各个事件之间的发生时间段可以相交!

    无论是微观还是宏观上来看都是同时发生的,也就是说同一时刻有多个事件发生。

    2.并行概念

    指在同一时刻,有多条指令在多个处理器上同时执行。所以无论从微观还是从宏观来看,二者都是一起执行的。

    三、多线程是并发吗?

    打开任务管理器中的性能:

    从上图可以看到处理器的个数以及线程数。CPU就是中央处理器

    下面画一个具有6个中央处理器的电脑:

    处理器1运行多个线程,这是并发;6个处理器之间的线程的运行就是并行,而且同一时刻只有6个线程是并行的!(实际上一个处理器不会只处理一个线程,因为电脑本身已经运行很多线程了。)

    所以,可以总结如下:

    1.单处理器的情况

    多线程一定是并发

    2.多处理器的情况

    线程个数 ≤ 处理器个数时,多线程是并行

    线程个数 > 处理器个数时,多线程有并行也有并发

    高并发的处理必然要首先考虑使用多个处理器,这样可以用并行缓解高并发压力,如果处理器不行的话,系统架构设计得再好也无济于事!

    参考文献:

    [1].CPU个数,核心数,线程数

    [2].CPU,进程,线程间的执行关系

    [3].线程和进程以及并行和并发的概念

  • 相关阅读:
    kubernetes案例 tomcat+mysql
    elasticsearch+logstash+kibana部署
    elasticsearch集群部署以及head插件安装
    Rhel7.4系统部署cobbler
    部署Hadoop2.0高性能集群
    使用haproxy实现负载均衡集群
    nginx实现动静分离的负载均衡集群
    heartrbeat实现web服务器高可用
    keepalived+lvs
    LVS集群之IP TUN模式以及网站压力测试
  • 原文地址:https://www.cnblogs.com/shuhao66666/p/12925373.html
Copyright © 2011-2022 走看看