【并发编程的艺术读书笔记】多线程的效率以及资源浪费问题

简介

本文主要讨论多线程的效率以及资源浪费问题

1、多线程一定更快吗

多线程不一定更快,单核情况下多线程需要上下文切换,造成资源浪费,速度反而变慢。而多核情况下,每个核心执行自己的线程,不需要上下文切换,不造成资源浪费,速度更快。

什么是上下文切换

我们都知道cpu的核心数代表着最多能同时执行的线程数,但是在平时使用时可以发现,其实计算机中有万级以上的线程在运行,这是因为一个cpu核心在管理多个线程的时候会分配时间片,让每个线程执行一段时间保存再切换。
在这里插入图片描述
而这个保存并切换的过程,就是上下文切换,上下文切换的开销一般是在毫秒级的,属于是比较高的开销

2、多线程的使用场景

根据上面的描述,既然多线程下会造成开销的提高,为什么还要使用多线程?
其实不是所有设计都要围绕快来展开的,还要考虑用户的体验。比如我们经常使用计算机,如果不保持每个软件的开启状态,我们是不是会很难受?所以多线程还是必要的。

多线程场景:

操作系统为了用户体验,使用多线程保持每个软件的运行。

当前要读取1000个网站的数据,获取时间是1ms,而网络延迟等待时间为100ms,也就意味着CPU要空转100*1000ms。可以把1000个网站平均分给10个线程,一个线程读取100个网站的数据,当有网络延迟等待时,切换到其他线程执行读取任务。

3、线程一定越多越好吗

线程并不是越多越好,也不是越少越好,而是要找一个折中点,具体要开多少个线程是要看实际情况做测试的(一般是几个到几十个)

4、如何查看线程信息

如何查看线程信息,jstack命令dump线程信息,导出快照

jstack pid

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值