线程状态

Linux线程的状态与调度

Linux线程的状态与调度

Java线程的6种状态及切换

Java 线程的生命周期中,在 Thread 类里有一个枚举类型 State,定义了线程的几种状态,分别有:

  • New
  • Runnable
  • Blocked
  • Waiting
  • Timed Waiting
  • Terminated

Java线程的6种状态及切换

上图有误,根据Blocked注释可知:线程从Waiting或Timed Waiting状态恢复后,应该是去到Blocked状态

Thread state for a thread blocked waiting for a monitor lock. A thread in the blocked state is waiting for a monitor lock to enter a synchronized block/method or reenter a synchronized block/method after calling Object.wait.

sleep和wait区别

1、sleep方法是Thread类的静态方法;

wait方法是Object类的成员方法

2、sleep方法使当前线程暂停执行指定的时间,让出cpu给其他线程,但是它的监控状态依然保持着,当指定的时间到了又会自动恢复运行状态。在调用sleep方法后,线程不会释放对象锁;

而当调用wait方法时,线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象调用notify()方法后本线程才进入对象锁定池处于准备状态。

3、sleep方法有可能会抛出异常,所以需要进行异常处理;

wait方法不需要处理

4、sleep方法可以在任何地方使用;

wait方法只能在同步方法和同步代码块中使用

参考

Linux线程的状态与调度

版权

评论