1、初识那个它(多线程)
1:可以看到我的电脑有234个进程正在运行、有2749个线程正在运行,这个时候你们是不是和我一样有很多问号呢?
2、什么是进程
1:当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用的内存和系统资源,而一个进程又是由多个线程所组成的。
3、什么是线程
1:线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码去是共享的,即不同的线程可以执行同样的函数。
4、什么是多线程
1:多线程顾名思义,就是多个线程一起跑,即在一个程序中可以同时运行多个不同的线程来执行不同的任务,也就是说允许单个程序创建多个并且执行的线程,来完成你想完成的任务。
5、多线程优点
1:我们电脑的CPU的运行速度很快,但是我们的CPU是单线程的,我们可以利用它处理数据的快,将我们的时间切成不同的区间,可以提搞我们CPU的利用率。在多线程程序中,一个线程必须等待的时候,CPU可以运行其他不同的线程而不是等待(这里有一个执行线程上下文的切换),这样就大大提高了程序的效率。
6、多线程缺点
1:当然有利有弊线程也是程序,所以线程需要占用内存,线程越多占用内存也越多。
2:多线程需要协调和管理,所以有需要CPU时间跟踪线程。
3:线程之间对共享资源的访问也会相互影响,必须解决竞用共享资源的问题(线程不安全)
4:线程太多了会导致控制太复杂,最终可能导致很多bug。
7、何时使用多线程
1:当我们的任务首先可以进行任务拆解,比如我们有一个任务特别消耗时间,但是里面的代码不会影响后面的代码处理,这个时候我们可以开启一个线程帮我们执行该任务。
8、何时不要使用多线程
1:多线程也同样会给我们带来很多缺点,最大的问题是它是程序变的过于复杂(一不小心就GG),拥有多线程本身并不复杂,复杂的是线程的交互作用。这样带来了无论是否交互是否有意的,都会带来较长的开发周期,以及带来间歇性和bug。因此要么多线程的交互设计简单一些,要么根本不要使用多线程。除非你有强烈的重写和调试改bug的欲望。当用户频繁的分配和切换线程时,多线程会带来资源和CPU的开销,在某些情况下,太多的 I/O操作是非常棘手的,当只有一个或者两个工作线程要比众多线程在相同的时间执行代码块的多。