为什么要用多线程?即多线程的目的

多线程并非仅用于提升性能,它旨在避免阻塞(异步调用)、减少CPU空转以及在特定条件下提升效率。例如,异步的Ajax调用、避免Android UI线程阻塞、HTTP服务器的并发响应等。多线程只有在任务具有并发性、无资源竞争且CPU是瓶颈时,且在多核CPU环境下,才能真正提高性能。阿姆达尔定律提供了一个估算性能提升比例的公式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以前我认为多线程的作用就是提升性能。实际上,多线程并不一定能提升性能(甚至还会降低性能);多线程也不只是为了提升性能。多线程主要有以下的应用场景: 

1、避免阻塞(异步调用) 

单个线程中的程序,是顺序执行的。如果前面的操作发生了阻塞,那么就会影响到后面的操作。这时候可以采用多线程,我感觉就等于是异步调用。这样的例子有很多: 

ajax调用,就是浏览器会启一个新的线程,不阻塞当前页面的正常操作; 

流程在某个环节调用web service,如果是同步调用,则需要等待web service调用结果,可以启动新线程来调用,不影响主流程; 

android里,不要在ui thread里执行耗时操作,否则容易引发ANR; 

创建工单时,需要级联往其他表中插入数据,可以将级联插入的动作放到新线程中,先返回工单创建的结果…… 

2、避免CPU空转 

以http server为例,如果只用单线程响应HTTP请求,即处理完一条请求,再处理下一条请求的话,CPU会存在大量的闲置时间 

因为处理一条请求,经常涉及到RPC、数据库访问、磁盘IO等操作,

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

励志重写JDK

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值