前言
我们知道线程有六种状态:NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED,那么sleep状态下的线程是属于这六种状态的哪种呢?
sleep下的线程有什么特点?
一个线程sleep时它是没有cpu资源使用权的,如果有锁的话线程sleep后并不会释放锁
sleep线程属于的状态
sleep的线程是处于TIMED_WAITING状态,等睡眠时间过了之后进入RUNNABLE状态
代码
/*
@author Nian
@Date 2022/8/15 10:08
@purpose
@Note If a thread is sleep,it's state is TIMED_WAITING
*/
public class SleepState {
public static void main(String[] args) {
Thread thread = new Thread(()->{
try {
for (int i = 0; i < 5; i++) {
Thread.sleep(3000);
System.out.println(i);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
});
thread.start();
while (true){
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(thread.getState());
}
}
}
代码执行结果如下: