栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

进程VS线程&&单线程VS多线程&&线程池

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

进程VS线程&&单线程VS多线程&&线程池

进程与线程
  • 进程:进程就是正在执行的程序。
  • 线程:是程序执行的一条路径, 一个进程中可以包含多条线程。

通俗理解:例如你打开微信就是打开一个进程,在微信里面和好友视频聊天就是开启了一条线程。

两者之间的关系:

  • 程序是数据和指令的集合, 是一个静态的概念, 就是一堆代码, 可以长时间的保存在系统中
  • 进程是程序运行的过程, 是一个动态的概念, 进程存在着生命周期, 也就是说进程会随着程序的终止而销毁, 不会永久存在系统中
    例子:

我们打开一个聊天软件,这就是开启了一个进程
当我们在软件里面打开一些功能,比如空间, 扫一扫, 设置…,这些操作就是线程
所以可以说 “进程” 包含 “线程”, “线程” 是 “进程” 的子集
进程和线程的模型如下

单线程和多线程

单线程,就是只有一条线程在执行任务,串行的执行,而多线程,则是多条线程同时执行任务,所谓同时,并不是一定真的同时,如果在单核的机器上,就是假同时,只是看起来同时,实际上是轮流占据CPU时间片。

下面的每一个格子是一个时间片(每一个时间片实际上超级无敌短),不同的线程其实可以抢占不同的时间片,获得执行权。时间片分配的单位是线程,而不是进程,进程只是容器

多线程的优缺点

优点
1、提高CPU的使用率
例如朋友圈发表图片,当你上传9张图片的时候,如果开启一个线程用同步的方式一张张上传图片,假设每次上传图片的线程只占用了CPU 1%d的资源,剩下的99%资源就浪费了。但是如果你开启9个线程同时上传图片,CPU就可以使用9%的资源了。
2、提高程序的工作效率
还是拿朋友圈发表图片来说,假设开启一个线程上传一张图片的时间是1秒,那么同步的方式上传9张就需要9秒,但是你开启9个线程同时上传图片,那么就只需要1秒就完成了。

缺点
1、如果有大量的线程,会影响性能,因为CPU需要在它们之间切换。
2、更多的线程需要更多的内存空间。
3、多线程操作可能会出现线程安全或者死锁等问题。

多线程并行和并发的区别

多线程并行和并发的区别
概念

并行:多个处理器或者多核处理器同时执行多个不同的任务。 并发:一个处理器处理多个任务。

打个比喻

并行就是一个人用他的左手喂女儿吃饭,同时用右手喂儿子吃饭。
并发就是一个人先喂女儿吃一口饭,接着喂儿子吃一口,然后再喂女儿吃一口,轮流喂。

并发: 多个任务看起来是同时进行, 这是一种假并行(单核下使用多道技术实现)

并行: 多个任务同时进行(并行必须有多核才能实现,否则只能实现并发(伪并行))

线程池

关于线程池
前面举的朋友圈发表图片的多线程例子中,为了提高CPU的使用率和程序的工作效率就需要创建9个线程来上传图片。但是线程的创建和销毁是非常耗CPU和内存的,因为它涉及到要与操作系统进行交互。这样就可能导致创建与销毁线程的开销比实际业务还大,而线程池就能很好的解决这些问题。线程池里的每一个线程结束后,并不会销毁(可以设置超时销毁),而是回到线程池中成为空闲状态,等待下一个对象来使用。

使用线程池的优点

  1. 减少创建与销毁线程带来的性能开销。
  2. 可控制最大并发线程数,避免过多资源竞争而导致系统内存消耗完。
  3. 能更好的控制线程的开启与回收,并且能定时执行任务。

线程池的核心工作流程

线程池案例说明
老王是个深耕在帝都的一线码农,辛苦一年挣了点钱,想把钱存储到银行卡里,钱银行卡办理遇到了如下的遭遇:

  1. 老王银行门口取号后发现有柜台营业但是没人办理业务直接办理了。
  2. 老王取号后发现柜台都有人在办理,等待席有空地,去坐着等办理去了。
  3. 老王取号后发现柜台都有人办理,等待席也人坐满了,这个时候银行经理看到老王是老实人本着关爱老实人的态度,新开一个「临时」窗口给他办理了。
  4. 老王取号后发现柜台都满了,等待座位席也满了,「临时」窗口也人满了。这个时候银行经理给出了若干解决策略。
  • 直接告知人太多不给你办理了。
  • 看到老王就来气,也不给不办理也不让他走。
  • 经理让老王取尝试跟座位席中最前面的人聊一聊看是否可以加塞,可以就办理,不可以还是被踢走。
  • 经理直接跟老王说谁让你来的你找谁去我这办理不了。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/285597.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号