zoukankan      html  css  js  c++  java
  • 关于CPU核心,线程,进程,并发,并行,及java线程之间的关系

    前言:作为一个转行java的小白,一直搞不清楚java中的多线程.于是来梳理一下关于CPU核心,线程,进程,并发,并行,及java线程之间的关系,

    1.CPU角度来看:

    我们以Intel的Core i5-8250U为例来举例,它是四核八线程的CPU ,

    我认为是一个CPU集成了4个核心,一般来说一个核心对应一个线程,Intel通过超线程技术来实现一个核心对应2个线程,所以它是四核8线程.

    线程数:是同一时刻设备能并行执行的程序个数,这里说的线程是CPU级别的,不是java里的线程.

    2.操作系统角度:

    在操作系统中,进程是最小的资源分配单位,在一个进程中可以有多个线程.如下

     我们可以看到这个任务管理器的图,我电脑是4核8线程的CPU,我的电脑四核八线程,是采用超线程技术将一个物理处理核心模拟成两个逻辑处理核心.

    我认为,一个逻辑处理器核心同一时间点只能执行一个进程,那理论上最多应该同时执行8个进程啊.

    我的电脑同时开启了213个进程,2900个线程,那它是怎么处理的呢?我找了下资料

    原来操作系统是采用的是时间片轮转的抢占式调度方式,每个进程有各自独立的一块内存,使得各个进程之间内存地址相互隔离,

    由于CPU的执行效率非常高,时间片非常短,在各个任务之间快速地切换,给人的感觉就是多个任务在“同时进行”.

    3.java程序的角度

    然后java程序可以算是一个进程,java的线程在jvm里分配,jvm模拟了虚拟的电脑运行环境

    4.并发

    并发主要是针对服务器而言,是否并发的关键是看用户操作是否对服务器产生了影响。

    因此,并发用户数量的正确理解为:在同一时刻与服务器进行了交互的在线用户数量。

    这些用户的最大特征是和服务器产生了交互,这种交互既可以是单向的传输数据,也可以是双向的传送数据

    并发用户数量的统计的方法目前还没有准确的公式,因为不同系统会有不同的并发特点。例如OA系统统计并发用户数量的经验公式为:使用系统用户数量*(5%~20%)

    5.并行

    我觉得并行执行是相对顺序执行而言,顺序执行是指一个任务从上到下依次执行.

    那么并行执行是指多个任务同时执行

    以上就是我的一点个人浅见了,若有不足和错误之处,恳请各位大佬批评指正.

  • 相关阅读:
    Visual C#使用DirectX实现视频播放
    sql server中新增一条数据后返回该数据的ID
    JQuery上传插件Uploadify使用详解
    .NET JS escape加密的后台解密
    Redis Sentinel(哨兵模式)
    Redis集群入门
    Redis 4.0.X版本reshard出现错误的解决办法
    首层nginx 传递 二级代理,三级代理......多级代理nginx 客户端真实IP的方法
    Centos6 Ruby 1.8.7升级至Ruby 2.3.1的方法
    SQL Server 2008示例数据库安装问题解决
  • 原文地址:https://www.cnblogs.com/lusaisai/p/11537641.html
Copyright © 2011-2022 走看看