在介绍线程之前,我们首先要了解一下进程。
进程的官方解释:
进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在当代面向线程设计的计算机结构中,进程是线程的容器。
线程就是轻量级的进程,是程序执行的最小单位。使用多线程而不是多进程进行并发程序的设计是因为线程间的切换和调度成本远低于进程。
线程的生命周期:
NEW表示刚刚创建好的线程,还没有开始执行。
等到线程调用start方法,表示线程开始执行,进入RUNNABLE状态,表示线程需要的资源都准备好了正在执行。
如果线程遇到synchronized同步块,并且没有获得请求的锁,线程将进入BLOCKED阻塞状态,直到该线程获得请求的锁。
WAITING和TIMED_WAITING都是等待状态,前者是无时间限制的等待,后者是有时间限制的等待。线程调用object.wait方法,则线程会进入等待状态,直到其他线程调用object.notify或者object.notifyAll方法,则会回到RUNNABLE状态。通过join方法等待的线程则会等目标线程终止才会进入RUNNABLE状态。
当线程执行完毕,则会进入TERMINATED状态。