1,sleep方法是Thread类的静态方法,wait()是Object超类的成员方法

2,sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。在调用sleep()方法的过程中,线程不会释放对象锁。

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

3,sleep方法需要抛异常,wait方法不需要

为什么sleep方法需要抛异常,别问我为什么,因为:

  Thread类中sleep方法就已经进行了抛异常处理
  public static native void sleep(long millis) throws InterruptedException;

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

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

java生命周期图谱如下所示:

注意sleep方法是单线程的,没有释放锁,这个锁指的是线程锁,不是对象锁,而wait方法释放锁,这个锁是对象锁,所以sleep时间到和wait等到notify之后享受的待遇一样,都是回到就绪状态,等待系统分配cpu

————————————————
版权声明:本文为CSDN博主「掌灯夜行」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/dao_wolf/article/details/81175089

最新文章

  1. 禁用PHP函数,可以对php.ini进行配置
  2. 一些有意思的VR设备介绍
  3. 很久以前写的一个 ShareRestrictedSD 类
  4. Mybatis批量添加对象List
  5. SSH_框架整合1
  6. Java 异常 —— java.io.InvalidClassException: javax.xml.namespace.QName; local class incompatible
  7. sendip简单使用
  8. Python的高级Git库 Gittle
  9. 配置PostgreSQL Streaming Replication集群
  10. 产品经理如何赢得开发人员的尊重和支持?-摘自infoq
  11. CSS实现标题超出宽度省略号来表示
  12. jQuery 杂项方法
  13. %hd %d %ld %u ......
  14. npm err错误
  15. IOS传值之代理传值(一)
  16. Vulkan Tutorial 07 Window surface
  17. DevOps/TestOps概念
  18. ThreadLocal 原理和使用场景分析
  19. Linux安装gitbook
  20. Shell编程-控制结构 | 基础篇

热门文章

  1. 图数据库PageRank算法
  2. python3 range 倒序
  3. C++学习笔记1_ 指针.引用
  4. JAVA GUI 事件监听事件 详解 和 案例.
  5. 深度学习tensorflow实战笔记 用预训练好的VGG-16模型提取图像特征
  6. TensorFlow如何提高GPU训练效率和利用率
  7. 基于Rancher搭建Kubernetes
  8. python购物车练习题
  9. Apache服务及个人用户主页功能和密码验证
  10. JAVA 调用HTTP接口POST或GET实现方式