多线程介绍
1. 什么是多线程
多线程是指在单个进程中运行多个线程,如果一个程序允许运行两个或两个以上的线程,那么他就是多线程程序
2. 为什么要用多线程
最主要的目的就是提高CPU的利用率
- 提高处理速度
- 避免无效等待(IO的时候可以做别的事)
- 提高用户体验: 避免卡顿,缩短等待时间
- 并行处理,提高性能,通常是服务器领域(例如Tomcat),用多个线程接收进来的HTTP请求,而不是排队等待单一的线程处理
- 在Android开发中,主线程的重要任务之一是绘制屏幕界面,该线程中不允许进行IO操作或者网络请求,目的就是避免卡顿,影响用户交互
- 便于编程建模: 把这个大的任务A分解成几个小任务,任务B、任务C、任务D,分别建立程序模型,并通过多线程分别运行这几个任务,那就简单很多了
- 计算机性能定律: 摩尔定律失效,阿姆达尔定律登上舞台
- 摩尔定律: 当价格不变时,集成电路上可容纳的元器件的数目,约每隔18-24月便会增加一倍,性能也会提高一倍
- 阿姆达尔定律: 一般情况下,处理器越多,程序执行的速度就会越快,但是会有一个上限,上限取决于程序中串行部分的比例,并行的比例越高,多处理器的效果越明显
3. 什么场景中会用到多线程
- 什么时候需要新开线程?
通常在需要进行耗时任务的时候,例如执行磁盘IO读写,或者从网络中获取信息的时候 - 为了同时做多件不同的事
- 开网页同时听音乐
- 后台线程: 例如执行定时任务quartz
- 为了提高工作效率、处理能力
- Tomcat: 每次有一个新的请求过来的时候,Tomcat会把这个请求交给一个新的线程去处理。
- 多线程后台并行下载文件
- NIO和AIO
- 需要同时有很大的并发量的时候,压测
4. 多线程的局限
- 上下文切换带来的消耗
- 异构化任务(任务结构不一样)很难高效并行
- 带来线程安全问题
- a++数据错误
- 死锁等活跃性问题
- 初始化的时候

浙公网安备 33010602011771号