java线程基础巩固---wait和sleep的本质区别是什么,深入分析(面试常见问题)
2024-09-03 14:55:29
对于wait和sleep貌似都会阻塞线程,但是它们确实是很大的区别的,所以下面一点点来探讨:
- 区别一、Sleep()是线程里面的方法,而Wait()是Object类的方法。
这个比较简单,直接看代码便知:
- 区别二、sleep()方法不需要被notify唤醒,而wait()则需要【当然wait(10)这样的情况除外】。
这个比较容易理解,就不多解释了。 - sleep()使用时不需要使用syncronized加上同步锁,但是wait()需要。
这个做一下实验就明白了:
嗯~~调用sleep()时是不需要加同步块的,接下来再看wait():
好接着解决这个异常: - sleep()时不会释放同步锁,但是wait()会释放。
这个不太好理解,下面做实验验证一下:
而当线程一sleep()结束之后,线程二就抢到锁了。好,接下来换成wait()再看结果:
看见木有,等于两个线程同时执行了,也就是在线程一wait()期间,其锁就被释放可以被其它线程获得了。
最新文章
- FWT与High dick(划掉改成Dimensional) Fourier Transform
- The file “base.app” couldn’t be opened because you don’t have permission to view it.
- RubyMine不能调试Rails项目的问题
- Linux下安装和配置JDK与Tomcat(升级版)
- C#创建windows服务列表
- UVa 10300 - Ecological Premium
- 当IIS挂的网站出现选 图片文件, 静态文件都打不开时, 可以试试新建一个应用程序池试试看...
- Ajax异步请求XMLHttpRequest对象Get请求
- Qt在各平台上的搭建qt-everywhere
- mvc4中jquery-ui日期控件datepicker的应用
- Ubuntu13.04 Eclipse下编译安装Hadoop插件及使用小例
- MySQL 6.0安装图解
- Django的CBV和FBV
- ROS机器人程序设计(原书第2版)补充资料 (陆) 第六章 点云 PCL
- Spring学习(一):理解IoC容器
- window10:jdk 8下载和安装步骤
- HDFS集群常见报错汇总
- Spring系列(二):Spring IoC/DI的理解
- 2018.09.08 poj1185 炮兵阵地(状压dp)
- 使用DataTrigger来代替Triggerr