目录
1.线程状态分为哪几种?它们有什么样的含义?
2.各状态之间的切换
① NEW(new)
操作系统中线程还未创建出来,只是有个Thread类对象.(线程在start()之前)
② TERMINATED(terminated)
线程已经执行完毕
③RUNNABLE (runnable)
有两种:一种是正在运行,另一种是随时可以上CPU运行都可以是runnable状态.
④ TIMED_WAITING(timed_waiting)
指定时间等待,使用sleep(),因为在线程中如果加上了休眠,那么线程大部分时间都是花在休眠上(我们设定的休眠时长是以毫秒为单位,远比CPU执行速度要慢).
⑤ BLOCK(block)
线程运行过程中,等待锁时出现的状态.
⑥ WAIT(wait)
线程运行过程中,使用wait()方法的状态.
● 主要的图例:

● 代码示例:
通过Thread对象的getState()方法获取线程状态.
public static void main(String[] args) throws InterruptedException {Thread thread1 = new Thread(() -> {while (true) {try {System.out.println("thread1State:"+Thread.currentThread().getState());Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}});//start()线程创建之前System.out.println("thread1State:"+thread1.getState());thread1.start();Thread.sleep(2000);//线程结束后再打印其状态就会是TERMINATED状态,把线程中的while循环去掉,线程就会正常执行完毕System.out.println("thread1State:"+thread1.getState());}

注:对于Blocked和wait状态的例子之后再补充.