4.1.多线程JUC-什么是多线程?
一.多线程的概述:
可以把"多线程"拆分为"多"和"线程"->
"多"表示很多,因此只需要知道什么是"线程"即可。
"线程"中包含了"进程"的概念,"进程"的概念如下:
一个软件运行之后,他就是一个进程。
线程的概念如下:
如上图,
比如一个软件360,360其中有很多独立的功能,
因此可以这么理解,360软件运行之后,它的本身是一个进程,而360的各个功能可以看作是多个线程,如下图:
因此可以把"线程"理解为应用软件中互相独立,可以同时运行的功能,
当同时运行的功能比较多时,就形成了多线程。
二.代码演示:
如上图的代码,
在运行的时候,CPU首先读取到第一行代码int a=10,那么在内存中就会创建一个变量a,但是内存中创建变量需要时间,那么在创建的过程当中CPU是无法继续运行下面的代码的,所以CPU只能先等着,假设创建a用了0.01秒,
然后开始运行第二行int b=20,内存中继续创建了变量b,同样的CPU也等了0.01秒,同理,第三行代码也等了0.01秒,第四行代码也等了0.01秒,
这个就是以前的代码的执行过程,以前的代码也叫做单线程程序,因为他是从头往下依次运行的,CPU不会切换到其他代码中运行,所以效率较低,
那么多线程的程序是怎么样的呢?
注意:多线程程序的特点就是能同时的去做多件事情,CPU可以在多个程序之间进行切换,把等待的空闲时间充分的利用起来,这就是多线程最大的特点,提高了程序的运行效率:
三.多线程的应用场景:
1.软件中比较耗时的操作:
拷贝、迁移大文件,通常使用多线程完成,因为如果使用单线程,在拷贝的过程当中就无法干其他事情,只能等待拷贝完毕,之后才能做其他事情,而且拷贝的内容往往比较多,会花费很多时间,一直等太浪费时间;
加载大量的资源文件,特别是在玩游戏的时候,点击游戏之后会加载游戏的资源文件,但是加载的同时我还想让游戏做其他的操作,比如播放游戏的背景音乐,此时就要用到多线程;
2.所有的聊天软件;
3.所有的后台服务器。
四.总结:
- 多线程可以充分利用程序中等待的时间,让CPU在多个程序中进行切换,从而提高了程序的运行效率
- 为什么要有多线程?就是为了当数据量过大时能高效处理