多线程相关概念

多线程

一、概念

1、程序、进程、线程区别与联系

1.1 程序:

程序是死的,静态的,是一些代码和数据经过编译后的二进制指令。一般对应于操作系统中的一个可执行文件,比如windows系统的exe文件,linux系统的elf文件

1.2 进程:

进程是执行中的程序,是活的,她执行着程序中的一个一个指令。每个进程都是一个程序经历创建,运行和销毁的过程。

进程特点:

  • 一个进程有独立的虚拟内存空间,映射到特定的物理内存空间。各个进程间不会相互干扰。

  • 一个进程在内存空间中分区: 有栈区、堆区、代码区和数据区等等

  • 操作系统何以同时运行多个进程,通过一定的调度算法使进程以为只有自己在独占cpu时间

1.3 线程

进程可以产生多个线程。同一进程的多个线程也可以共享此进程的某些资源(比如:代码、数据)。

线程特点:

  • 一个进程内的多个线程可以并发运行

  • 一个进程中的多个线程共享相同的内存单元/内存地址空间,可以访问相同的变量和对象,而且它们从同一堆中分配对象并进行通信、数据交换和同步操作。所以线程间进信息交换更容易、更快。

  • 线程的启动、中断、消亡,消耗的资源非常少。

1.4 线程和进程的区别

  • 线程切换开销小,进程切换开销大,因为每个进程间都有独立的代码和数据,而线程间共用。

  • 线程和进程最根本的区别在于:进程是资源分配的单位,线程是调度和执行的单位。

  • 多线程指在同一应用程序中有多个顺序流同时执行;
    多进程指在操作系统中能同时运行多个任务(程序);

1.5多线程并行取决于核心数

多线程,多进程是并行还是并发取决于你的CPU核心数量。 如果是单核CPU,多线程也没用。 如果是多核心CPU,那么就可以并行了。 CPU多一个核心,这个多出来的核心就可以多处理一个线程。 异步对应的概念是同步。 多线程是实现异步的方法。 多线程并行(同时进行)(这属于异步)依赖于多核心。

如果只有单核,那多线程也只能并发,看起来像同时运行而已。

查看本电脑核心数:

实际上是6核12线程。但这里显示的是12个核。

六核十二线程的意思是有6个物理核心,每个核心又各自进行双线程计算,既是被系统理解成12个核心。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fdnSZvnM-1665213776430)(D:\学习资料\笔记\java多线程\image-20220912130502966.png)]

2、并发、并行、同步、异步

并行:多个任务在同一时刻,在不同的处理器或核上同时执行,并行的必要条件是多处理器或者多核。
必须是两个及以上个任务在同时执行,必须是同时,没有时间上的先后顺序。

并发:是指多个任务同时在执行,分为并行并发分时并发
这里的“同时”对于并行并发来说是指同一时刻,是一个时间点。(真正同时)
而对于分时并发来说,是指一小段时间,是时间段,是通过处理器在这个时间段内不断的切换任务来实现的,由于时间段很短,所以给人一种任务同时执行的效果。(看起来同时)

例如:

食堂打饭,20个窗口同时给学生开放打饭,20个学生能同时在20个窗口打完饭。这叫并行并发

食堂吃饭,有菜,有米饭,有汤,你一会吃米饭,一会吃菜,一会喝汤,最后都吃完了。虽然看起来米饭,菜,汤你是同时吃的,但实际上还是一小段时间吃一样,不断切换,才看起来像同时。这叫分时并发。

上面的人就相当于处理器,抽烟喝酒烫头等于 3 个任务。

***异步:***在并发环境中,各任务各自独立执行,相互之间互不干扰。

***同步:***是指在并发执行的环境中,各个任务可以有序的执行,括括对于资源的共享或者互斥的访问。

参考:
操作系统中的并行、并发、同步、异步等概念 - 知乎 (zhihu.com)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值