java并发编程(一)----初识
一、什么是并发
先看“科普中国”给出的官方解释。并发在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。
通俗来讲,并发就是指同一时间间隔内发生两个或多个事件。 且并发是在同一实体上的多个事件。
并发编程可以提高计算机系统的效率和性能。那么操作系统是如何实现这种并发的呢?
现在我们的操作系统无论是Windows、Linux还是MacOS其实都是多用户多任务分时操作系统,用户可以同时干多件事情。
但对于单核CPU来说,同一时间只能干一件事情。为了看起来像同时干多件事,分时操作系统把CPU的时间划分为长短基本相同的时间区间,也就是我们说的时间片
,通过操作系统的管理,把这些时间片一次轮流的分配给各个用户使用。
如果一个作业在时间片结束之前还没有完成,那么改作业就被暂停下来,放弃CPU,等待下一轮循环再继续做,这时的CPU则被分配给另一个作业去使用。
由于计算机的处理速度很快,只要时间片的间隔取得适当,那么一个用户作业从用完分配给他的时间,到下一次轮转获得的时间,中间的间隔会让用户察觉不出来,好像整个系统由他独占似的。所以在单核CPU中,我们看起来同时干了多见事,其实是通过CPU时间轮转并发完成的。
二、什么是并行
先看“科普中国”给出的官方解释。并行在操作系统中是指,一组程序按独立异步的速度执行,无论从微观还是宏观,程序都是一起执行的。
通俗来讲,并行是指同一时刻内发生两个或多个事件。 并行是在不同实体上的多个事件 。当系统有一个以上CPU时,当一个CPU执行一个进程时,另一个CPU可以执行另一个进程,两个进程互不抢占CPU资源,可以同时进行。
三、并行与并发的区别
1、从时间上来说:并发是指在同一个时间段内,两个或多个程序执行,有时间上的重叠(宏观上是同时,微观上仍是顺序执行);而并行,无论宏观还是微观,程序都是一起执行的。
2、从资源分配来说,并发是多个任务指定多个线程,同时竞争同一个资源,有强烈的竞争;而并行没有强烈竞争,各自执行各自的。
3、从任务处理来说,并发是一个CPU处理器同时处理多个线程任务;并行是多个CPU处理器同时处理多个线程任务。
四、线程和进程的区别
操作系统中的进程和线程是并发编程的基本单位。
进程是程序的执行实例,每个进程都拥有自己的内存空间和系统资源。
线程是进程的子集,它共享进程的系统资源,并在进程内部执行代码。通过使用多个线程,可以在同一时间内执行多个任务。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏