一、多线程介绍
在介绍多线程之前我们有必要先了解一下进程这个概念,何为进程?
进程:正在执行的程序就可以认为占用了一个进程。
线程:线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序
1.1 进程和线程的区别
1. 线程是程序执行的最小单位,而进程是操作系统分配资源的最小单位
2. 一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线
3. 进程之间相互独立,但同一进程下的各个线程之间共享程序的内存空间(包括代码段,数据集,堆等)及一些进程级的资源(如打开文件和信号等),某进程内的线程在其他进程不可见
4. 调度和切换:线程上下文切换比进程上下文切换要快得多
1.2 线程的生命周期
一个线程从出生到死亡,可能涉及到6个状态
1.New:线程新建但是并未启动的状态
2.Runnable:可运行的状态,等待cpu调度
3.Blocked:线程处于阻塞状态
4.Waiting:线程等待状态
5.Timed Waiting:线程处理具有等待时间的等待状态
6.Terminated:终止线程后的线程状态。(线程正常执行完毕或者出现异常时候的状态)
二、多线程解决什么了问题
多线程的引入,可以充分的利用CPU资源
三、多线程用在什么场景
1.比如有个后台任务是发邮件,需要给10w用户发送邮件,可以启动多个线程来执行
四、创建一个线程
Java 提供了三种创建线程的方法:
- 通过实现 Runnable 接口;
- 通过继承 Thread 类本身;
- 通过 Callable 和 Future 创建线程。