欢迎来到天天培训网!全国[切换城市] 登录 注册
首页 发布课程 机构平台 手机浏览

手机扫一扫

咨询热线

400-0808-102

苏州JAVA培训_详解java多线程sleep和wait区别

  • 联 系 人:老师(先生) 
  • 咨询热线:0512-66555771
  • 授课学校:苏州北大青鸟教育
  • 授课地址:苏州市姑苏区养育巷49号2楼
课程推荐

苏州软件工程培训_ACC

面议

苏州电脑培训_北大青

面议

苏州电脑培训_站长们

面议

苏州电脑培训_做好内

面议

苏州电脑培训_北大青

面议

苏州软件工程培训_软

面议

机构信息

所在地区:江苏 苏州市

会员级别:VIP会员10

身份认证:      

已  缴 纳:0.00 元保证金

我的勋章:  通过认证 [诚信档案]

在线客服:

机构名片

苏州北大青鸟教育

微信客服
【温馨提示】来电请说明在天天培训网看到我们的,谢谢
课程详情

苏州JAVA培训是中国地区首批加盟北大青鸟APTECH品牌教育培训的专业计算机职业培训机构之一,主要开设:电脑培训|软件工程师培训|JAVA培训|.NET培训|网络营销培训等相关课程。

北大青鸟老师在授课过程中,经常被同学提问到java学习中java多线程 sleep()和wait()的区别。在此,北大青鸟老师将作出详细的区别解释,希望对学员们的学习有所帮助。这两个方法主要来源是,sleep用于线程控制,而wait用于线程间的通信,与wait配套的方法还有notify和notifyAll.

  区别一:

  sleep是Thread类的方法,是线程用来 控制自身流程的,比如有一个要报时的线程,每一秒中打印出一个时间,那么我就需要在print方法前面加上一个sleep让自己每隔一秒执行一次。就像个闹钟一样。

  wait是Object类的方法,用来线程间的通信,这个方法会使当前拥有该对象锁的进程等待知道其他线程调用notify方法时再醒来,不过你也可以给他指定一个时间,自动醒来。这个方法主要是用走不同线程之间的调度的。

  区别二:

  使用区域

  由于wait函数的特殊意义,所以他是应该放在同步语句块中的,这样才有意义 。

  注意:两个方法都需要抛出异常

  区别三 :

  关于锁的释放 ,在这里假设大家已经知道了锁的概念及其意义。调用sleep方法不会释放锁(自己的感觉是sleep方法本来就是和锁没有关系的,因为他是一个线程用于管理自己的方法,不涉及线程通信)

  JDK 7 中的解释:

  “public static void sleep(long millis)

  throws InterruptedExceptionCauses the currently executing thread to sleep (temporarily cease execution) for the specified number of milliseconds, subject to the precision and accuracy of system timers and schedulers.The thread does not lose ownership of any monitors.

  public final void wait() throws InterruptedExceptionCauses the current thread to wait until another thread invokes the notify() method or the notifyAll() method for this object. In other words, this method behaves exactly as if it simply performs the call wait(0).The current thread must own this object's monitor. The thread releases ownership of this monitor and waits until another thread notifies threads waiting on this object's monitor to wake up either through a call to the notify method the notifyAll method. The thread then waits until it can re-obtain ownership of the monitor and resumes execution.“

  调用wait方法会释放当前线程的锁(其实线程间的通信是靠对象来管理的,所有操作一个对象的线程是这个对象通过自己的wait方法来管理的,就好像这个对象是电视机,三个人是三个线程,那么电视机的遥控器就是这个锁,假如现在A拿着遥控器,电视机调用wait方法,那么A就交出自己的遥控器,由jVM虚拟机调度,遥控器该交给谁。【我想到一个好玩的例子:如果A拿遥控器的期间,他可以用自己的sleep每隔十分钟调一次电视台,而在他调台休息的十分钟期间,遥控器还在他的手上~】(北大青鸟苏州电脑人才) 

咨询电话:0512-66555771         QQ1294015820

更多课程点击:https://www.ttpx.net/index.php?homepage=szbdqnzzq

地址:苏州市姑苏区养育巷492

苏州JAVA培训|苏州JAVA培训学校|苏州JAVA培训中心

免责声明

本网页所展示的有关【苏州JAVA培训_详解java多线程sleep和wait区别】的信息/图片/参数等由的会员【苏州北大青鸟教育 】提供,由天天培训网会员【苏州北大青鸟教育 】自行对信息/图片/参数等的真实性、准确性和合法性负责,本平台(本网站)仅提供展示服务,请谨慎交易,因交易而产生的法律关系及法律纠纷由您自行协商解决,本平台(本网站)对此不承担任何责任。您在本网页可以浏览【苏州JAVA培训_详解java多线程sleep和wait区别】有关的信息/图片/价格等及提供 【苏州JAVA培训_详解java多线程sleep和wait区别】的商家公司简介、联系方式等信息。

在您的合法权益受到侵害时,请您致电400-0808-102,我们将竭诚为您服务,感谢您对天天培训网的关注与支持!