JAVA_多线程(概念)

什么是多线程

提到多线程那肯定就要讲讲单线程!
单线程 在程序执行时,所走的程序路径按照连续顺序排下来,前面的必须处理好,后面的才会执行。

那么多线程呢? 多线程(multithreading),就是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。具有这种能力的系统包括对称多处理机、多核心处理器以及芯片级多处理或同时多线程处理器。在一个程序中,这些独立运行的程序片段叫作“线程”(Thread),利用它编程的概念就叫作“多线程处理”

举个简单的生活上的例子:
单线程就像你要做一桌美味的菜肴,你得先去市场买菜,等菜买回来过后你才能操刀开做;
多线程呢 就像你周末在家追剧一样,你可以边追剧边嗑瓜子。甚至还可以边追剧边洗衣服

线程与进程的区别

一个程序就是一个进程,而一个程序中的多个任务则被称为线程。
一个线程必须要有一个进程但是一个进程可以有多个线程

进程是表示资源分配的基本单位,线程是进程中执行运算的最小单位,亦是调度运行的基本单位。

举个例子:

打开你的计算机上的任务管理器,会显示出当前机器的所有进程,QQ电脑管家等,当你在是用电脑管家时,你操作电脑加速,杀毒,清理垃圾都可以同时运行,其中的每个操作就可以理解为线程在运行 并且有多于一个线程在同时在运行就是多线程
JAVA_多线程(概念)
这里就要提到一个问题 电脑中运行最快的硬件是什么呢 内存?硬盘?还是处理器?答案肯定是显而易见的 cpu的速度是最快的 。而且比起其他硬件快的不是一星半点,所以说cpu会把他的整个执行流程划分成很多很小很小的时间片段。
先以单核cpu为例 比如说我现在电脑在同时听音乐和看电影,首先我电影和音乐是存在本地的,cpu分配给了听音乐一个时间片段。此时cpu就是先将音乐的一部分加载到内存(假如是100kb)内训在输出给扬声器进行播放。此时100kb的音乐足够播放假设100ms的音乐 但处理这一系列的操作对于cpu是很快的,就花了1ms。这是cpu就有99ms的空闲,他就会再分配一个片段给看电影,同理 cpu又只耗时1ms就加载完了,那么到最后cpu就会有98毫秒的空闲,这就是我们经常会看到任务管理器中cpu占用率是曲线的原因,有时的占用率会降到百分之几的原因(当然如果排除到所有其他软件的影响 理论上是会降到0的)。所以说单核的cpu在运行多任务时严格来说其实不算是多线程,因为他没有产生并行任务,只是cpu的运行速度太快我们感觉不到而已
多核cpu呢其实原理差不多 只不过多核cpu可以实现并行计算 就像把听音乐放在1核中运行 看电影放在2核心上运行类似 在处理大量任务是就能让cpu的效率更高
JAVA_多线程(概念)

多线程的优缺点

综上所述,多线程的优先就很显而易见了
优点:
1、使用线程可以把占据时间长的程序中的任务放到后台去处理 。
2、用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度 。
3、程序的运行速度可能加快。
4、在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较有用了。在这种情况下可以释放一些珍贵的资源如内存占用等 。

那多线程这么好有没有缺点呢?当然了凡事有利就有弊,我们说说多线程的缺点
缺点
1、如果有大量的线程,会影响性能,因为操作系统需要在它们之间切换 。
2、更多的线程需要更多的内存空间 。
3、线程可能会给程序带来更多“bug”,因此要小心使用 。
4、线程的中止需要考虑其对程序运行的影响 。
5、通常块模型数据是在多个线程间共享的,需要防止线程死锁情况的发生 。

关于多线程概念的讲解就到这了,拜拜