package com.shsxt.thread02;
/*
- 线程的状态
- 新生 :new Thread(),创建一个线程
- 就绪 :start(),就绪不是运行,就绪状态的线程会处于就绪队列中,等待cpu的调度
- 运行 :当cpu为某个现成饭非配时间片,这个线程开始执行
- 阻塞 :sleep(),阻止线程的正常执行,等待阻塞解除
- 终止 :线程结束
- 注意:
-
1.如果一个线程一旦终止,没有办法恢复,就算重新开启也不是原来的线程
-
2.阻塞状态接触,没有办法直接恢复运行状态,都会进入就绪状态
- 如何使线程进入到终止状态:
-
1.执行执行完毕 2.通过外部干涉 1)调用stop() destroy() 2)通过外部标识判断**
- 如何使线程进入到就绪状态:
-
1.start()
-
2.阻塞状态接触直接进入就绪状态
-
3.yield() 礼让线程
-
4.线程切换,被切换的线程直接进入就绪状态
- 如何使线程进入到阻塞状态:
-
1.sleep()
-
2.join() 插队
-
3.wait()
-
4.IO操作
- sleep(毫秒数) 线程睡眠,静态方法
-
可以方法问题发生的可能性
-
模拟网络延时
- 使程序进入阻塞状态,让出cpu的资源,如果遇到对象锁的情况,sleep()抱着对象资源睡觉,不会释放对象的锁
*/
public class StateDemo01 {
public static void main(String[] args) {
//倒计时
new Thread(()->{
for(int i=10;i>=0;i–){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
if(i==0){
System.out.println(“开始抢购!!!”);
}else{
System.out.println(i);
}
}
}).start();
}
}