首页 > 编程语言 >java并发编程(一)----初识

java并发编程(一)----初识

时间:2023-07-23 23:55:05浏览次数:37  
标签:java 多个 并行 ---- 并发 初识 线程 进程 CPU

一、什么是并发

    先看“科普中国”给出的官方解释。并发在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。 

    通俗来讲,并发就是指同一时间间隔内发生两个或多个事件。 且并发是在同一实体上的多个事件。

    并发编程可以提高计算机系统的效率和性能。那么操作系统是如何实现这种并发的呢?

    现在我们的操作系统无论是Windows、Linux还是MacOS其实都是多用户多任务分时操作系统,用户可以同时干多件事情。

    但对于单核CPU来说,同一时间只能干一件事情。为了看起来像同时干多件事,分时操作系统把CPU的时间划分为长短基本相同的时间区间,也就是我们说的时间片,通过操作系统的管理,把这些时间片一次轮流的分配给各个用户使用。

    如果一个作业在时间片结束之前还没有完成,那么改作业就被暂停下来,放弃CPU,等待下一轮循环再继续做,这时的CPU则被分配给另一个作业去使用。

    由于计算机的处理速度很快,只要时间片的间隔取得适当,那么一个用户作业从用完分配给他的时间,到下一次轮转获得的时间,中间的间隔会让用户察觉不出来,好像整个系统由他独占似的。所以在单核CPU中,我们看起来同时干了多见事,其实是通过CPU时间轮转并发完成的。

二、什么是并行

    先看“科普中国”给出的官方解释。并行在操作系统中是指,一组程序按独立异步的速度执行,无论从微观还是宏观,程序都是一起执行的。

    通俗来讲,并行是指同一时刻内发生两个或多个事件。 并行是在不同实体上的多个事件 。当系统有一个以上CPU时,当一个CPU执行一个进程时,另一个CPU可以执行另一个进程,两个进程互不抢占CPU资源,可以同时进行。

三、并行与并发的区别

1、从时间上来说:并发是指在同一个时间段内,两个或多个程序执行,有时间上的重叠(宏观上是同时,微观上仍是顺序执行);而并行,无论宏观还是微观,程序都是一起执行的。

2、从资源分配来说,并发是多个任务指定多个线程,同时竞争同一个资源,有强烈的竞争;而并行没有强烈竞争,各自执行各自的。

3、从任务处理来说,并发是一个CPU处理器同时处理多个线程任务;并行是多个CPU处理器同时处理多个线程任务。

四、线程和进程的区别

    操作系统中的进程和线程是并发编程的基本单位。

    进程是程序的执行实例,每个进程都拥有自己的内存空间和系统资源。

    线程是进程的子集,它共享进程的系统资源,并在进程内部执行代码。通过使用多个线程,可以在同一时间内执行多个任务。

标签:java,多个,并行,----,并发,初识,线程,进程,CPU
From: https://www.cnblogs.com/nliu/p/17576217.html

相关文章

  • 3.获取网络接口相关的信息
    GettinginformationabouttheNetworkinterfacesigconfig命令,是net-tools软件包的一部分。ipaddress|addr|ashow如果只想显示ipv4或者ipv6地址,可用:ip-4address1:lo:<LOOPBACK,UP,LOWER_UP>mtu65536qdiscnoqueuestateUNKNOWNgroupdefaultqlen1000......
  • wonderful-sql Task02
    练习题1.编写一条SQL语句,从product(商品)表中选取出“登记日期(regist_date)在2009年4月28日之后”的商品,查询结果要包含productname和regist_date两列。SELECT product_name, regist_dateFROM productWHERE regist_date<'2009-04-28';2.请说出对product......
  • 快速切换 nodejs 的版本
    最近在开发一个常驻进程、定时任务统一调度系统,以应对开发在进程管理方面遇到的各种复杂问题。组里开发项目,一般来说是一个人承包整个项目,包括调度器设计,还有后台系统。我还有一部分工作,是队列相关的信息,这个由监控同学负责,到时候我后台聚合他的数据一并展示。然后我就遇到问题......
  • linux-centos7.6-gpt-uefi安装
    目录一、需要二、环境vm设置系统环境一、需要安装的系统适用企业服务器磁盘大于2个的场景二、环境添加硬盘,挂载硬盘环境:linuxcentos7.6vmwareworkstationPro15.5.2build-15785246vm设置系统环境......
  • Github打不开、chrome应用商店打不开终极解决方案-pigcha
    记录一下一个非常好用的工具,便于后期自己进行查找!Pigcha是什么?是⼀款专业的全平台的⽹络代理⼯具,能xx上⽹,能⽅便地针对域名进⾏代理或⾛本地,非常好用。Pigcha使⽤教程下载客户端并注册登录:入口地址官方使用教程:入口地址是联系客服微信:mrnew_注:如果您发现速度未达预......
  • linux 中fold命令
     001、[root@PC1test02]#lsa.txt[root@PC1test02]#cata.txt##测试数据010203040506070809101112131415[root@PC1test02]#fold-w2a.txt##以两个字符为单位进行折叠010203040506070809101112131415 002、[root@PC1t......
  • 从互联网到云时代,Apache RocketMQ 是如何演进的?
    作者:隆基2022年,RocketMQ5.0的正式版发布。相对于4.0版本而言,架构走向云原生化,并且覆盖了更多业务场景。消息队列演进史操作系统、数据库、中间件是基础软件的三驾马车,而消息队列属于最经典的中间件之一,已经有30多年的历史。消息队列的发展主要经历了以下几个阶段:第一......
  • SD 插件安装
    1.换脸插件https://github.com/s0md3v/sd-webui-roop安装:直接选择扩展,从网址中安装参考:https://zhuanlan.zhihu.com/p/639577691错误:cmdline:gitfetch-v--originstderr:'fatal:detecteddubiousownershipinrepositoryat'/media/xx/share/projects/stable-diff......
  • redis 查看list 长度
    Redis查看List长度在使用Redis时,我们经常会使用List数据结构来存储和操作一系列的元素。Redis的List是一个有序的、可重复的数据结构,它可以用于实现队列(Queue)和栈(Stack)等数据结构。在某些场景下,我们可能需要查看List中元素的数量,本文将介绍如何使用Redis命令来查看List的长度。Re......
  • redis 查看key的值
    Redis查看Key的值简介Redis是一个高性能的开源内存数据库,常用于缓存、消息传递、实时分析等场景。在开发过程中,我们经常需要查看Redis中存储的数据,这里将介绍如何使用命令行和代码查看RedisKey的值。步骤概览下面是查看RedisKey值的步骤概览:步骤描述步骤......