文章目录
前言
今天来简要介绍一下JAVA的生命周期以及几种线程状态间的转换。
一、线程的几种状态介绍
1、NEW(新建状态)
定义:线程尚未启动的线程状态。
当一个线程被创建出来并且没有被调用过start()方法时,就处于NEW状态
2、RUNNABLE(可运行状态)
定义:可运行线程的线程状态。
调用过start()方法后线程就转换为了RUNABLE的可运行状态。
3、RUNNING(运行状态)
定义:线程正在运行的状态。
线程只可从可运行状态转为运行状态
4、BLOCKED(堵塞状态)
定义:一个线程的线程状态阻塞等待监视器锁定。
线程受外部原因影响,由运行状态转变为堵塞状态。
5、WAITING(等待状态)
定义:等待线程的线程状态。
线程调用了wait()方法后线程进入等待状态,等待状态往往是由线程自身的行为决定的。
6、TIMED_WAITING(延时等待状态)
定义:具有制定等待时间的等待线程的线程状态。
在线程使用sleep()方法后,线程处于延时等待状态,sleep()方法执行完毕后,线程恢复为可执行状态。
7、TERMINATED(终止状态)
定义:终止线程的线程状态。
线程代码全部执行完毕或是被中断结束执行后的状态
二、线程状态间的转化
1、可以将堵塞状态、等待状态以及延时等待状态视作中间状态。正在运行的线程有可能受自身因素、外部因素影响,转换至中间三种状态,但是这三种中间状态度可以被再次唤醒,重新转换为可运行状态。
2、所有状态都可以转变为终止状态,有些转化是线程正常执行完毕的转化,而剩下的就是线程运行时受到中断操作的转化。
总结
内容介绍比较简略,如有错误,欢迎指正~