0
点赞
收藏
分享

微信扫一扫

Java线程的状态、wait和sleep区别

Java线程的状态、wait和sleep区别

Thread.State

线程状态,线程可以处于以下状态之一:

  • NEW:尚未启动的线程处于此状态
  • RUNNABLE:再Java虚拟机中执行的线程处于此状态
  • BLOCKER:被阻塞等待监视器锁定的线程处于此状态
  • WAITING:正在等待另一个线程执行特定动作的线程处于此状态
  • TIMED_WAITING:正在等待另一个线程执行特定动作到达指定时间的线程处于此状态
  • TERMINATED:已退出的线程处于此状态

一个线程可以再给定时间点处于一个状态,这些状态是不反应任何操作系统线程状态的虚拟机状态。

请添加图片描述

线程中断或者结束,一旦进入TERMINATED
终止状态,就不能再次启动

wait和sleep区别

来自不同的类

wait–>Object
sleep–>Thread

关于锁的释放

wait会释放锁
sleep不会释放锁,抱着锁睡觉

适用范围不同

wait必须在同步代码块或同步方法里
sleep可以在任何地方使用

是否需要捕获异常

wait不需要捕获异常
sleep需要捕获异常,因为肯能发生超时等待的问题

举报

相关推荐

0 条评论