java io 并发编程,JAVA进阶系列 - 并发编程 - 第1篇:进程&线程&并发&并行

学习目标进程

线程

并发

并行

内容

一、进程与线程

“专业”点的说法就是:进程是资源分配的最小单位,线程是CPU调度的最小单位。

b53ec853dd5194471dc2029b66994ed4.png大哥,我错了,别打脸!

进程

线程就是用来加载指令、管理内存、管理IO的,可以说它是一个“执行中的程序”。程序由指令和数据组成,在程序未被运行时,就是一堆存放在磁盘中的二进制数据。只有当我们运行该程序,通过CPU去执行它里面的指令,将数据加载到内存中,这时才算是开启了一个线程。

例如:我们在windows系统中启动了一个浏览器,此时我们打开任务管理器,则可以在进程栏中查看到该进程。

12218e97ac1b08747985ba5ce939ca41.png任务管理器

线程

一个进程中可以分为一到多个线程。它是操作系统能够进行运算调度的最小单位,是允许应用程序并发执行多个任务的一种机制。

一个线程对应一条指令流,将指令流中的一条条指令以一定的顺序交给CPU执行。同一个程序中的所有线程均会独立执行相同程序,且共享同一块内存区域。

例如:我们启动一个播放器程序来播放视频,这个程序就会创建两条线程同时运行,一条线程负责播放画面,另一条线程负责播放声音。两条线程同时进行,这样就不会导致我们只能看到画面听不到声音等情况出现。

二、并发与并行

这两个概念反映的是操作系统利用自身CPU资源来处理程序运行请求的两种不同方式。

并发

在上面我们说到线程中的指令都是交由CPU来执行的。如果将CPU的核数比喻为管道,那么在单核CPU中,我们多个线程是如何通过一个管道实现同时输出的呢?

这里就涉及到了一个时间片的概念。时间片,又称为“量子”或“处理器片”,它是操作系统分配给每个正在运行的进程微观上的一段CPU时间(windows下时间片最小约为15ms,linux上约为5ms)。

由于CPU在线程间的切换(时间片很短)速度非常快,用户是察觉不到线程的切换的,因此会给人一种多线程同时运行的感觉,而实际上线程还是串行执行的。

一般称呼这种线程轮流使用CPU的方式为并发(concurrent)。

9a0813cc104261f9efa8db124ae4ff18.png轮流运行

并行

由于时代的发展,单核的CPU已经远远无法满足人们的使用需求,因此又有了多核CPU。多核CPU即多个CPU组成,这些CPU集成在一个芯片里,可以通过内部总线来交互数据,共享数据。在CPU的多个核心同时执行的多个任务就是并行任务。

e9310d995034a1220c265c1fa014c485.png同时运行

总结进程:资源分配的最小单位,加载指令、管理内存、管理IO的。

线程:CPU调度的最小单位,指令流。

并发:同一时间应对(dealing with)多件事情的能力。

并行:同一时间动手做(doing)多件事情的能力。

今天的文章到这里就结束了,小伙伴们有什么建议或者意见请联系我改进哦,你们的支持是我最大的动力!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值