线程的状态State是个枚举类enum,共6种运行状态
程序运行状态:
①New:新建但未运行
②Runnable:可运行等待CPU调度
③Blocked:被阻塞,如在synchronized方法阻塞
④Waiting:等待线程通知调度,不带超时的方式:Object.wait/Thread.join/LockSupport.park
⑤Timed Waiting:具有指定时间的等待,带超时的方式:Thread.sleep/Object.wait/Thread.join/LockSupport.parkNanos/LockSupport.parkUntil
⑥Terminated:线程正常或异常执行完毕
public class Demo22 {
public static Thread thread1;
public static Demo22 obj;
public static void main(String[] args) throws Exception {
Thread thread1 = new Thread(new Runnable() {
@Override
public void run() {
synchronized (Demo22.class) {
System.out.println("thread1当前状态:" + Thread.currentThread().getState().toString());
System.out.println("thread1 执行");
}
}
});
synchronized (Demo22.class) {
System.out.println("没调用start,thread1状态:" + thread1.getState().toString());
thread1.start();
System.out.println("调用start后,thread1状态:" + thread1.getState().toString());
Thread.sleep(200L);
System.out.println("主线程休眠200millis,thread1状态:" + thread1.getState().toString());
}
Thread.sleep(3000L);
System.out.println("等待3秒,让thread1抢到锁,再看thread1当前状态:" + thread1.getState().toString());
}
}
synchronized锁住calss主线程休眠200,thread1进入阻塞
运行结果: