Thread中线程的状态:(获取线程的状态 t.getState())
NEW: 把Thread对象创建好了,但还没开始行动【多线程问题2-关于线程的状态及其线程安全问题~】public static void main(String[] args) {Thread t=new Thread(()->{});System.out.println(t.getState());//获取线程的状态,此时是NEW状态,因为任务安排好了,但还没有创建线程t.start();}TERMINATED: 操作系统中的线程已经执行完毕,销毁了,但是Thread对象还在
public static void main(String[] args) throws InterruptedException {Thread t=new Thread(()->{});t.start();Thread.sleep(1000);//因为t线程啥都没干,此时1s之后t线程肯定执行完了,但是Thread对象还在System.out.println(t.getState());//此时TERMINATED}RUNNABLE: 就绪状态,处于这个状态的线程,就是在就绪队列中,随时可以被调度到CPU上 。如果代码中没有进行sleep,也没有进行其他的可能导致阻塞的操作,大概率是处于Runnable状态
public static void main(String[] args) throws InterruptedException {Thread t=new Thread(()->{while(true){//这里面啥都不能有!!!}});t.start();Thread.sleep(1000);System.out.println(t.getState());//Runnable,因为是一直持续不断的执行循环,随时系统想调度它上个CPU都是随时可以的}TIMED_WAITING:代码中调用了sleep,join(时间)就会进入到TIMED_WAITING,意思就是当前的线程在一定时间之内是阻塞的状态
public static void main(String[] args) throws InterruptedException {Thread t=new Thread(()->{while(true){try {Thread.sleep(1000);//有sleep,进入了阻塞状态} catch (InterruptedException e) {e.printStackTrace();}}});t.start();Thread.sleep(1000);System.out.println(t.getState());//TIMED_WAITING}BLOCKED: 当前线程在等待锁,导致了阻塞(阻塞状态之一)
WAITING: 当前线程在等待唤醒,导致了阻塞(阻塞状态之一)
- 春季老年人吃什么养肝?土豆、米饭换着吃
- 三八妇女节节日祝福分享 三八妇女节节日语录
- 老人谨慎!选好你的“第三只脚”
- 校方进行了深刻的反思 青岛一大学生坠亡校方整改校规
- 脸皮厚的人长寿!有这特征的老人最长寿
- 长寿秘诀:记住这10大妙招 100%增寿
- 春季老年人心血管病高发 3条保命要诀
- 眼睛花不花要看四十八 老年人怎样延缓老花眼
- 香槟然能防治老年痴呆症? 一天三杯它人到90不痴呆
- 老人手抖的原因 为什么老人手会抖
