sleep方法会使线程暂停执行一段时间,wait方法会阻塞线程,直到被唤醒或等待时间超时。

  两者区别具体如下:

  1 原理不同

  sleep方法是Thread类的静态方法,使线程暂停执行一段时间,等到计时结束,该线程会自动“苏醒”。而wait方法是Object类的非静态方法,用于线程间的通信,使线程等待,直到其他线程调用notify方法(或notifyAll方法)时才被唤醒。也可以通过计时即设置超时时间来自动唤醒该线程。

  2 对锁的处理机制不同

  sleep方法不涉及线程间通信,不会释放锁。而wait方法会使线程释放占有的锁。

  3 使用区域不同

  sleep方法可以放在任何地方,而wait方法只能放在同步块中。

  4 是否需要捕获异常不同

  sleep方法必须捕获异常,而wait、notify和notifyAll这些方法不需要捕获异常。在线程睡眠过程中,其他对象可能调用它的interrupt方法,抛出InterruptedException。

  综上所述,因为sleep方法不会释放锁,容易产生死锁问题,所以推荐使用wait方法。

  参考资料

  《Java程序员面试笔试宝典》 P149-150

最新文章

  1. Node.js高效按行输出文件内容
  2. 生成PDF的新选择-Phantomjs
  3. URI 中特殊字符处理
  4. 自己收集原生js-2014-2-23
  5. Django缓存使用方法
  6. this prototype 闭包 总结
  7. IOS第六天(1:scrollView 属性和查看大图)
  8. PHP获取Cookie模拟登录
  9. llnq SqlMethods like
  10. 区分jquery中的offset和position
  11. sql必知必会(第四版) 学习笔记二 视图
  12. checkbox属性checked="checked"但状态不是勾选状态的解决办法
  13. nosql和关系型数据库比较?
  14. IAR和Keil文件包含路径设置
  15. Python巡检Oracle表空间并邮件告警
  16. 【有意思的BUG】客户端无厘头 已连网的场景初始化太慢 未连网的场景异常崩溃
  17. Android WebView 上传各种文件(包括拍照 录像 录音 文件 音乐 等,用到图片或拍照的,可以参考下)
  18. Python读取excel表的数据
  19. 玩转Linux服务器常用命令
  20. ceph 性能测试

热门文章

  1. instanceof 运算符
  2. Android开发学习之路-Volley源码解析
  3. python 学习笔记十五 web框架
  4. Combination Sum II
  5. HDOJ 4750 Count The Pairs
  6. CentOS6.4 安装OpenResty和Redis 并在Nginx中利用lua简单读取Redis数据
  7. SpringMvc处理JSON
  8. anaconda win10安装报错:UnicodeDecodeError解决方法
  9. Css3 Media Queries移动页面的样式和图片的适配问题(转)
  10. Debian编译内核
  11. JQuery中parents和closest的区别
  12. OJ题目JAVA与C运行效率对比
  13. 吴恩达机器学习笔记53-高斯分布的算法(Algorithm of Gaussian Distribution)
  14. 浏览器关闭,onunload和onbeforeunload的使用
  15. 重新看halcon模板匹配
  16. drone 1.0 新功能试用以及说明
  17. 配置文件springmvc.xml
  18. 前端项目模块化的实践2:使用 Webpack 打包基础设施代码
  19. .net core 生成二维码
  20. @Java类加载的过程