您的位置:首页 > 大数据 > 人工智能

wait和sleep区别

2015-06-26 00:12 302 查看
sleep()、suspend()、resume()方法不推荐使用,推荐使用wait()、notify()、notifyAll()。

1.sleep()方法介绍

sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非



(a)醒来的线程具有更高的优先级。  

(b)正在运行的线程因为其它原因而阻塞。



2.wait()方法介绍

wait()是线程交互时,如果线程对一个同步对象x 发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。 当调用wait()后,线程会释放掉它所占有的锁标志,从而使线程所在对象中的其它synchronized数据可被别的线程使用。



3.waite()和notify()的区别

waite()和notify()因为会对对象的“锁标志”进行操作,所以它们必须在synchronized函数或synchronized block中进行调用。如果在non-synchronized函数或non-synchronized block中进行调用,虽然能编译通过,但在运行时会发生IllegalMonitorStateException的异常。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: