Java并发编程78讲--08 第08讲:为什么多线程会带来性能问题?

本文探讨了多线程编程可能导致的性能问题,包括上下文切换的开销和缓存失效,以及线程协作带来的额外成本。通过理解这些原理,可以更好地优化多线程应用,提高系统性能。
摘要由CSDN通过智能技术生成

在本课时我们主要学习为什么多线程会带来性能问题?

什么是性能问题

在上一课时我们已经学习了多线程带来的线程安全问题,但对于多线程而言,它不仅可能会带来线程安全问题,还有可能会带来性能问题,也许你会奇怪,我们使用多线程的最大目的不就是为了提高性能吗?让多个线程同时工作,加快程序运行速度,为什么反而会带来性能问题呢?这是因为单线程程序是独立工作的,不需要与其他线程进行交互,但多线程之间则需要调度以及合作,调度与合作就会带来性能开销从而产生性能问题。

首先,我们来了解究竟什么是性能问题?其实性能问题有许多的表现形式,比如服务器的响应慢、吞吐量低、内存占用过多就属于性能问题。我们设计优秀的系统架构、购置更多的 CDN 服务器、购买更大的带宽等都是为了提高性能,提高用户体验,虽然运行速度慢不会带来严重的后果,通常只需要我们多等几秒就可以,但这会严重影响用户的体验。有研究表明,页面每多响应 1 秒,就会流失至少 7% 的用户,而超过 8 秒无法返回结果的话,几乎所有用户都不会选择继续等待。我们引入多线程的一大重要原因就是想提高程序性能,所以不能本末倒置,不能因为引入了多线程反而程序运行得更慢了,所以我们必须要解决多线程带来的性能问题。

为什么多线程会带来性能问题

那么什么情况下多线程编程会带来性能问题呢?主要有两个方面,一方面是线程调度,另一个方面是线程协作。

调度开销

上下文切换

首先,我们看一下线程调度,在实际开发中,线程数往往是大于 CPU 核心数的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值