[JAVA学习笔记-90]并发与并行
来源:互联网 发布:淘宝退货率高怎么办 编辑:程序博客网 时间:2024/05/23 01:19
首先从CPU的角度来理解并发和并行:
对于单核的CPU,如果同时处理多个任务,必然需要依据调度原则进行分时处理,而在宏观上,对于使用者来说,这些
任务被这一个CPU同时(同一个时间段)完成了。这就是并发,concurrency。
对于多核CPU,多个任务可分别运行在各自的CPU核上,这些任务是物理上同时的(同时在被执行),这就是并行,
parallelism。
从软件的角度来看:
并发处理:
一个应用程序(进程)在一段时间内,处理多个任务的过程。
这里的处理多个任务,在物理形式上通常表现为通过多线程,分别处理多个任务。在单核处理器上,多线程是交替
执行的(例如根据时间片调度),在多核处理器上,线程被分配到不同的CPU核,从CPU核的角度来看,这些线程活动是
并行的,但是在某个CPU核上来看,它在执行的多个线程也是交替(分时)执行的。因为通常情况下,线程数远多于CPU
的核数,因此每个CPU核通常会分时运行多个线程。
并行处理:
最典型的并行处理是Fork/Join框架,将大的任务拆分成多个不相关的小任务,最后再汇总结果。
从软件的角度看,并行处理意味着多个任务同时在多个线程中运行。虽然这些线程在实际的CPU上,未必是独占CPU
核运行的(即,在物理层面上,这些线程也许是并发分时执行的,只不过软件层面不关心罢了)。
综上:
可以简单地把并发,理解成一个人同时做多种事情;并行则理解成多个人同时做一个事情(可拆分)。
对于单核的CPU,如果同时处理多个任务,必然需要依据调度原则进行分时处理,而在宏观上,对于使用者来说,这些
任务被这一个CPU同时(同一个时间段)完成了。这就是并发,concurrency。
对于多核CPU,多个任务可分别运行在各自的CPU核上,这些任务是物理上同时的(同时在被执行),这就是并行,
parallelism。
从软件的角度来看:
并发处理:
一个应用程序(进程)在一段时间内,处理多个任务的过程。
这里的处理多个任务,在物理形式上通常表现为通过多线程,分别处理多个任务。在单核处理器上,多线程是交替
执行的(例如根据时间片调度),在多核处理器上,线程被分配到不同的CPU核,从CPU核的角度来看,这些线程活动是
并行的,但是在某个CPU核上来看,它在执行的多个线程也是交替(分时)执行的。因为通常情况下,线程数远多于CPU
的核数,因此每个CPU核通常会分时运行多个线程。
并行处理:
最典型的并行处理是Fork/Join框架,将大的任务拆分成多个不相关的小任务,最后再汇总结果。
从软件的角度看,并行处理意味着多个任务同时在多个线程中运行。虽然这些线程在实际的CPU上,未必是独占CPU
核运行的(即,在物理层面上,这些线程也许是并发分时执行的,只不过软件层面不关心罢了)。
综上:
可以简单地把并发,理解成一个人同时做多种事情;并行则理解成多个人同时做一个事情(可拆分)。
阅读全文
0 0
- [JAVA学习笔记-90]并发与并行
- 02-Java学习笔记【并发和并行】
- Go语言并发与并行学习笔记(一)
- Go语言并发与并行学习笔记(二)
- Go语言并发与并行学习笔记(三)
- Go语言并发与并行学习笔记(一)
- Go语言并发与并行学习笔记(二)
- Go语言并发与并行学习笔记(三)
- Go语言并发与并行学习笔记(一)
- Go语言并发与并行学习笔记(二)
- Go语言并发与并行学习笔记(一)
- Go语言并发与并行学习笔记(二)
- Go语言并发与并行学习笔记(三)
- java并发编程学习5--并行流
- 【Java高并发学习】并行基础概念
- Java学习笔记--并行API
- Java 并发编程实战学习笔记——寻找可强化的并行性
- Java 并发编程实战学习笔记——串行任务转并行任务
- Shiro详解之Subject
- day08类的继承
- Python 10 个最好的特性
- [JAVA学习笔记-89]Executor框架的详细解读
- openfire 开发时输出xml到控制台
- [JAVA学习笔记-90]并发与并行
- 优先队列的简单实现方式
- Java实现补位
- box-sizing属性
- STM32的DMA的配置使用(关于原理。在《计算机组成与系统结构》的输入输出系统中有一些DMA的原理介绍)
- UUId
- FM1208 CPU卡操作程序调试小结
- mycat ascii码通配取模 org.opencloudb.route.function.PartitionByPrefixPattern
- [JAVA学习笔记-91]关于可重入函数