多线程的基础知识
目录
什么是多线程?为什么要用多线程?什么场景会用到多线程?多线程的局限性
什么是多线程?
多线程指的是在一个进程中运行多个线程。如果一个程序允许运行多个线程,那么它就是多线程程序。例子1:
房子:进程房子里的人:线程客厅:公共空间(共享内存)独立房间:线程的独享空间(独享内容)花园浇花:线程的合作 例子2:
大火锅一个人吃,单进程单线程。大火锅多个人吃,单进程多线程。一个人一个火锅,多进程多线程。
为什么要用多线程?
最主要目的是提高CPU的利用率
提高处理速度避免无效的等待:当程序(进程)加载界面时,另一个线程可以进行数据库的连接操作。提高用户体验:避免卡顿、缩短等待时间
并行处理,提高性能,通常是服务器领域(例如Tomcat),用多个线程去接收进来的HTTP请求,而不是排队单一等待的线程。
便于编程模型
把大的任务分成小的A、B、C、D等小任务,分别建立程序模型,并通过多线程分别去运行对应的小任务。
什么场景会用到多线程?
什么时候需要新开线程?
通常在需要进行耗时任务的时候,例如执行磁盘的IO读写,或者从网络获取信息的时候。
为了同时做多件不同的事
开网页的同时也听歌后台线程:比如定时执行任务**(quartz)**
为了提高工作效率、处理能力
上面的Tomcat的例子多线程后台并行下载文件NIO和AIO
需要同时有很大并发量的时候:测试产品时进行的 压测
多线程的局限性
大量线程的上下文切换带来的消耗
异构化任务(任务结构不一样)很难高效的并发
带来的线程安全问题
死锁等问题多个线程对同一个数据进行操作时,可能导致数据错误