多线程(what,why,when)

1. 什么是多线程

多线程是指在一个进程中包含多个并发执行的线程,这些执行不同的任务,互相协作共同完成进程的任务目标。

2. 为什么要使用多线程

在一个程序的执行过程中有许多耗时的操作,如磁盘IO、数据库的读写等。如果使用单线程就必须等待这些操作执行完才能去执行其他的操作,在等待的过程中CPU是空闲的。使用多线程可以将耗时操作放在后台继续执行的同时,执行其他操作,这样就可以提高CPU等资源的利用率,提高系统的吞吐量。

3. 使用多线程带来了什么坏处

  • 对多线程的管理需要额外的CPU开销,线程的切换也会导致额外的开销;
  • 多个线程竞争共享资源,当共享资源已经被占用时,其他线程需要等待,会造成程序运行速度变慢;
  • 多线程对共享变量进行读写,可能造成数据不一致的问题;
  • 多线程共享资源且推进顺序非法时,可能造成死锁。
  • 为了保证多线程安全,必须正确地使用线程同步技术,这增加了开发的难度。

4. 什么情况下需要用多线程

  • 高并发。系统在同时接受多用户的请求时,要尽量保证响应速度。
  • 并行计算(分布式计算)。多线程并行计算,加快计算速度
  • 大任务。大任务处理起来比较耗时,可以启动多个线程并行处理以加快处理速度
  • 后台任务。我们需要在后台处理的任务,通常会使用定时器来开启后台线程处理,比如有些数据表的状态我需要定时去修改。我们搜索引擎里面的数据需要定时去采集、定时生成统计信息、定时清理上传的垃圾文件等。定期更新配置文件。
  • 多线程异步处理任务。当我们需要处理一个耗时操作并且不要立刻知道处理结果时,我们可以开启后台线程异步处理该耗时操作,这样可以提高用户体验
  • 大量任务都需要等待外部资源(如远程文件、网络连接等),使用多线程提高CPU的利用率
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值