并发-线程调度级状态切换

113 阅读1分钟

在Java中,线程的状态可以分为以下几种:

  1. 新建(New):当一个Thread对象被创建时,线程处于新建状态。此时线程还没有启动,也还没有分配系统资源。
  2. 运行(Runnable):当调用Thread对象的start()方法后,线程处于就绪状态,等待系统分配执行时间。一旦系统分配了执行时间,线程就进入运行状态。
  3. 阻塞(Blocked):当线程等待某个事件(例如I/O操作)完成,或者等待获取一个锁时,线程就会进入阻塞状态。在阻塞状态下,线程不会消耗CPU时间。
  4. 等待(Waiting):当线程等待某个条件的发生,例如等待另一个线程的通知,或者等待某个锁的释放时,线程就会进入等待状态。在等待状态下,线程也不会消耗CPU时间。
  5. 计时等待(Timed Waiting):当线程等待一段时间,或者等待某个条件的发生,但是等待的时间是有限制的,例如调用Thread.sleep()方法时,线程就会进入计时等待状态。
  6. 终止(Terminated):当线程的run()方法执行结束,或者出现了异常而导致线程终止时,线程就会进入终止状态。

image.png

image.png