`
lilongping269
  • 浏览: 45455 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

Java中的sleep,wite,notify,notifyAll的区别

 
阅读更多
sleep()     wait()     notify/notifyAll()   的区别
1、sleep()是线程类的方法,sleep() 允许指定以毫秒为单位的一段时间作为参数,它使得线程在指定的时间内进入阻塞状态,不能得到CPU 时间,指定的时间一过,线程重新进入可执行状态。说白了 ,也就是把机会给其他线程,但是监控状态依然保持。重要的一点就是 当调用sleep()方法是 不会 释放对象锁的。

2、 wait() notify/notifyAll()直接隶属于 Object 类,也就是说,所有对象都拥有这一对方法。

wait()方法表示,放弃当前对资源的占有权,进入阻塞状态,并且该对象上的锁被释放。一直等到有人通知才会继续执行后面的代码。

notify()方法表示,当前的线程已经放弃对资源的占有,通知等待的线程来获得对资源的占有权,但是只有一个线程能够从wait状态中恢复,然后继续运行wait()后面的语句;

notifyAll()方法表示,当前的线程已经放弃对资源的占有,通知所有的等待线程从wait()方法后的语句开始运行。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics