Java基础——多线程(一)——多线程概述
进程与线程
进程:正在进行中的程序(直译)。是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竞争计算机系统资源的基本单位。线程是程序执行的最小单位。
线程:就是进程中一个负责程序执行的控制单元(执行路径)。是进程的一个执行单元,是进程内科调度实体。比进程更小的独立运行的基本单位。线程也被称为轻量级进程。进程是操作系统分配资源的最小单位。
PS:
1、一个进程之中最少要有一个线程。
2、开启多个线程是为了同时运行多部分代码。
3、每一个线程都有自己运行的内容。这个内容可以成为线程要执行的任务。
什么是多线程?
一个进程中可以有多个执行路径,称之为多线程。
要理解多线程,首先要知道什么是单线程。
提到多线程这里要说两个概念,就是串行(单线程)和并行(多线程),搞清楚这个,我们才能更好地理解多线程。
串行(单线程):其实是相对于单条线程来执行多个任务来讲的,拿下载文件来举例子:当我们下载多个文件时,在串行(单线程)中它按照一定的顺序去进行下载,也就是说,必须等下载完A之后才能开始下载B然后在下载C,时间上是不可能发生重叠。
即:任务A-->任务B-->任务C
并行(多线程):下载多个文件,开启多条线程,多个文件同时进行下载,这里是严格意义上的,在同一时刻发生的,并且在时间上是重叠的。
了解了这两个概念之后,我们再来说说什么是多线程。举个例子,我们360安全卫士,360安全卫士本身就是一个程序(可以看做是一个进程),它里面有很多的功能,比如体检、木马查杀、电脑清理、系统修复等等···
按照单线程来说,无论你想要体检、还是要木马查杀,那么你必须先执行完一个功能后,才能执行下一个任务,这里面是有一个执行顺序的。
如果是多线程的话,我们其实在清理垃圾的时候,还可以进行木马查杀、系统修复等等其他的操作,这个是严格意义上的同一时刻发生的,没有执行上的先后顺序。即:一个进程运行了多个线程。
多线程的好处与弊端
好处:解决多部分同时运行的问题。
弊端:线程太多会导致效率的降低。
其实应用程序的执行都是CPU在做着快速的切换完成的。这个切换时随机的。
JVM中的多线程
JVM启动时就启动了多个线程,至少有两个线程可以分析的出来。
1、执行main函数的线程
该线程的任务代码都定义在main函数中。
2、负责垃圾回收的线程。