Java并发编程简介

并发编程简介

1. 什么是并发编程
所谓并发编程是指在一台处理器上“同时”处理多个任务。并发是在在同一实体上的多个事件。多个事件在同一时间间隔发生。
并发编程
①从程序设计的角度来讲,是希望通过某些机制让计算机可以在一个时间段内,执行多个任务。
②从计算机CPU硬件层面来说,是一个或多个物理CPU在多个程序之间多路复用,提高对计算机资源的利用率。
③从调度算法角度来说,当任务数量多于CPU的核数时,并发编程能够通过系统的任务调度算法,实现多个任务一起执行。
2.并发编程的重要性
它是Java语言中最为晦涩的知识点,它涉及操作系统、内存、CPU、编程语言等多方面的基础能力,在开发语言中占据着无可替代的位置。
3.并发编程的特性
1.原子性
2.可见性
3.有序性
4.并发编程的意义
开发者通过使用不同的语言,实现并发编程,充分的利用处理器(CPU)的每一个核,以达到最高的处理性能,提升服务器的资源利用率,提升数据的处理速度。
5.从CPU层面谈并发编程
首先我们看下图,图中展示了最简单的CPU核心通过缓存与主存进行同通信的模型。
在缓存出现后不久,系统变得越来越复杂,缓存与主存之间的速度差异被拉大,由于 CPU 的频率太快了,快到主存跟不上,这样在线程处理器时钟周期内,CPU 常常需要等待主存,这样就会浪费资源。从我们的感官上,计算机可以同时运行多个任务,但是从 CPU 硬件层面上来说,其实是 CPU 执行线程的切换,由于切换频率非常快,致使我们从感官上感觉计算机可以同时运行多个程序。为了避免长时间的线程等待,我们一方面提升硬件指标(如多级高速缓存的诞生,这里不做讨论),另一方面引入了并发概念,充分的利用处理器(CPU)的每一个核,减少 CPU 资源等待的时间,以达到最高的处理性能。
6.操作系统,进程, 线程之间的联系与区别
这三者之间的关系如图,操作系统是包含多个进程的容器,而每个进程又是容纳多个线程的容器。
在这里插入图片描述
什么是进程?
官方定义:
进程(baiProcess)是计算机中的程序关于某数据集合的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。

Tips:系统进行资源分配和调度的基本单位其实就是 CPU 时间片的切换,一个 CPU 同一时间只能操作一个任务,只不过 CPU 在不停的切换工作任务,这里的时间片就是我们所说的系统进行资源分配和调度的基本单位。

那么从定义上感觉非常的抽象,但是进程其实就在我们日常的计算机使用过程中。请看下图,进入任务管理器看 Windows 操作系统下的进程:
在这里插入图片描述
什么是线程?
官方定义:
线程是操作系统能够进行资源调度的最小单位,它被包含在进行之中,是进程中的实际运作单位,单个线程执行的都是进程代码的某个片段,特定的线程总是在执行特定的任务。

那么进程和线程有什么区别呢?

- 诞生起源:现有进程,后有线程。进程由于资源利用率、公平性和便利性诞生。处理器的速度往往比外设的速度快(键盘、鼠标),为了提高 CPU 的利用率,诞生了线程,目的就是为了提高程序的执行效率。
- 概念:进行是资源分配的最小单位。线程时程序执行的最小单位(线程是操作系统能够进行资源调度的最小单位,同个进程中的线程也可以被同时调度到多个 CPU 上运行),线程也被称作为轻量级进程。
- 内存共享:默认情况下,进程的内存无法与其他进程共享(进程间通信通过 IPC 进行)。线程共享由操作系统分配给其父进程的内存块。
7.串行,并行与并发
串行:顺序执行,按部就班。在A任务执行完之前不能执行B。
并行:同时执行,多管齐下。指两个或两个以上事件或活动在同一时刻发生。在多道程序环境下,并行性使多个程序同一时刻可在不同CPU核心上同时执行。
并发:穿插执行,减少等待。指多个线程轮流穿插着执行,并发的实质是一个物理CPU在若干道程序之间多路复用,其目的是提高有限物理资源的运行效率。
在这里插入图片描述
小结
本博客重点讲解了操作系统的并发原理,以及进程和线程之间的区别与联系。除此之外,理解串行,并行,并发三种线程执行方式的区别尤为重要,对以后的课程学习有很大的帮助。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值