概述
线程的状态:
1.new
2.Runnable=>1)Ready 2)Running
3.TimedWaiting
4.Waiting
5.Blocked
6.Terminated
线程状态变迁路径如下:
验证代码:
public class ThreadState extends Thread{
static int count = 0;
static Object o = new Object();
@Override
public void run() {
synchronized (o){
System.out.println(this.getState());
ThreadUtil.sleep(3000);
try {
o.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(this.getState());
System.out.println("线程1执行完毕");
}
}
public static void main(String[] args) {
Thread t1 = new ThreadState();
System.out.println(t1.getState());
t1.start();
ThreadUtil.sleep(1000);
System.out.println(t1.getState());
ThreadUtil.sleep(3000);
System.out.println(t1.getState());
Thread t2 = new Thread(()->{
synchronized (o) {
// wait()执行后 ,当前线程必须拥有此对象的锁,直到另一个线程通知线程在这个对象锁等待醒来
// 否则会抛出异常
o.notify();
System.out.println(t1.getState());
}
});
t2.start();
ThreadUtil.sleep(1000);
System.out.println(t1.getState());
}
}
public class ThreadUtil {
private ThreadUtil(){
throw new RuntimeException("Can not create this Class!");
}
public static void sleep(long time){
try {
Thread.sleep(time);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
执行结果:
最后
以上就是体贴楼房为你收集整理的线程的生命周期及状态变化的全部内容,希望文章能够帮你解决线程的生命周期及状态变化所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复