企业网站建设须知,怎么找网站建设公司,装饰公司 网站模板,低价网站建设制作费用之前在写代码的时候#xff0c;如果需要让线程等待一会#xff0c;就直接使用sleep()方法#xff0c;一直也没有出过问题。而wait()方法的出场率很高#xff0c;每次打一个句点的时候#xff0c;对象的方法弹出来#xff0c;总是能看到wait()在其中#xff0c;wait()是一…之前在写代码的时候如果需要让线程等待一会就直接使用sleep()方法一直也没有出过问题。而wait()方法的出场率很高每次打一个句点的时候对象的方法弹出来总是能看到wait()在其中wait()是一个Object对象中为数不多的方法之一开始在尝试使用wait()方法的时候总是出错感觉这个方法很麻烦但是一直也没有研究这是一个什么样的方法。 最近在研究java同步机制才知道每个对象中都唯一一个对象锁的东西这个对象锁的设置就是为了实现传统PV锁的功能。wait()字面上的意思是等待意思就是等待对象的对象锁。相对应的notify()方法就是释放对象的对象锁然后由OS来分配给在等待对象锁的兄弟们wait()和notify()方法都要在synchronized代码块中使用。 总的来说wait()方法有sleep()有类似的地方都是延迟一个方法的运行但是sleep()一般来说都会设置一个时间参数或者等待一个interupt()来随时叫醒。而且sleep()方法就是单纯的释放占有CPU的权利睡起来后再继续工作没有对对象锁的操作。sleep()还有个很神奇的地方就是在哪个类中调用sleep()方法谁就去睡觉。即使在A类中调用B.sleep(1000)方法也是A去睡觉。 wait()方法一般不设置时间参数而是等待另一个方法执行完后释放对象锁出来后再开始执行用对象锁保持一个方法执行的顺序关系也维护了每次一个方法访问共有变量。巧妙的使用wait()能够轻易的实现很多多线程问题然而使用不好也很容易造成死锁的问题。转载于:https://www.cnblogs.com/ccliekkas/p/5001611.html