多线程的几种状态
Java-多线程的几种状态
- 🔎1.NEW( 系统中线程还未创建,只是有个Thread对象)
- 🔎2.RUNNABLE( (就绪状态. 又可以分成正在工作中和即将开始工作)
- 🔎3.TERMINATED(系统中的线程已经执行完了,Thread对象还在)
- 🔎4.TIMED_WAITING(指定时间等待,调用Thread.sleep()方法)
- 🔎5.BLOCKED(线程阻塞状态)
- 🔎6.WAITING(使用wait方法出现的状态)
- 🔎结尾
多线程的状态
- NEW( 系统中线程还未创建,只是有个Thread对象)
- RUNNABLE(就绪状态. 又可以分成正在工作中和即将开始工作)
- TERMINATED(系统中的线程已经执行完了,Thread对象还在)
- TIMED_WAITING(指定时间等待,调用Thread.sleep()方法)
- BLOCKED(线程阻塞状态)
- WAITING(使用wait方法出现的状态)
🔎1.NEW( 系统中线程还未创建,只是有个Thread对象)
public class Test {
public static void main(String[] args) {
Thread t = new Thread(() -> {
});
//线程启动之前获取线程状态 --> 只是有个Thread对象
System.out.println(t.getState());
t.start();
}
}
🔎2.RUNNABLE( (就绪状态. 又可以分成正在工作中和即将开始工作)
public class Test {
public static void main(String[] args) {
Thread t = new Thread(() -> {
while(true) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
t.start();
//线程就绪状态
System.out.println(t.getState());
}
}
🔎3.TERMINATED(系统中的线程已经执行完了,Thread对象还在)
public class Test {
public static void main(String[] args) {
Thread t = new Thread(() -> {
});
t.start();
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
//线程TERMINATED状态
System.out.println(t.getState());
}
🔎4.TIMED_WAITING(指定时间等待,调用Thread.sleep()方法)
public class Test {
public static void main(String[] args) {
Thread t = new Thread(() -> {
while(true) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
t.start();
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
//线程TIMED_WAITING状态
System.out.println(t.getState());
}
}
🔎5.BLOCKED(线程阻塞状态)
阻塞状态值得是代码不继续执行,而在等待
阻塞结束后,线程重新进入就绪状态
影响阻塞的方法
- sleep()
- wait()
- join()
- yield()
🔎6.WAITING(使用wait方法出现的状态)
线程调用 wait() 方法之后,就会变为 WAITING状态
🔎结尾
如果大家有什么不太理解的,可以私信或者评论区留言,一起加油