多线程--线程状态

线程状态

​ 一个线程对象在它的生命周期内,需要经历5个状态。

新生状态(New)

​ 创建线程对象,即为新生。

就绪状态(Runnable)

​ 处于就绪状态的线程已经具备了运行条件,但是还没有被分配到CPU,处于“就绪状态”,等待系统为其分配CPU。就绪状态并不是执行状态,需要等待CPU的调度,获取CPU的执行权。

有4中原因会导致线程进入就绪状态:

  1. 新建线程:调用start()方法,进入就绪状态;
  2. 阻塞线程:阻塞解除,进入就绪状态;
  3. 运行线程:调用yield()方法,直接进入就绪状态;
  4. 运行线程:JVM将CPU资源从本线程切换到其他线程。

运行状态(Running)

​ 已经获得CPU的执行权,开始执行run()方法。

阻塞状态(Blocked)

​ 线程执行,突然被停止,之后会进入就绪状态
​ 有4种原因会导致阻塞:

  1. 执行sleep(int millsecond)方法,使当前线程休眠,进入阻塞状态。当指定的时间到了后,线程进入就绪状态。
  2. 执行wait()方法,使当前线程进入阻塞状态。当使用nofity()方法唤醒这个线程后,它进入就绪状态。
  3. 线程运行时,某个操作进入阻塞状态,比如执行IO流操作(read()/write()方法本身就是阻塞的方法)。只有当引起该操作阻塞的原因消失后,线程进入就绪状态。
  4. join()线程联合: 当某个线程等待另一个线程执行结束后,才能继续执行时,使用join()方法。

死亡状态(Terminated)

​ 死亡状态是线程生命周期中的最后一个阶段。线程死亡的原因有两个。一个是正常运行的线程完成了它run()方法内的全部工作; 另一个是线程被强制终止,如通过执行stop()或destroy()方法来终止一个线程(注:stop()/destroy()方法已经被JDK废弃,不推荐使用)。

(注:stop()/destroy()方法已经被JDK废弃,不推荐使用)。
​ 当一个线程进入死亡状态以后,就不能再回到其它状态了。

文章最后:
如果此文章有什么不足的或者有什么问题的,请联系我
QQ:1178434749
VX:wuwen1178434749
我会进行一些补充
欢迎各位大佬点评,谢谢!

发布了22 篇原创文章 · 获赞 16 · 访问量 1613

猜你喜欢

转载自blog.csdn.net/qq_43098197/article/details/96869120