9.45. sleep 方法和 wait 方法有什么区别
这个问题常问,sleep 方法和 wait 方法都可以用来放弃 CPU 一定的时间,不同点在于如果线程持有某个对象的监视器,sleep 方法不会放弃这个对象的监视器,wait 方法会放弃这个对象的监视器。
sleep 方法是线程的静态方法,它的作用是让当前线程进入睡眠状态,不释放锁,其参数表示睡眠的时间长度,时间到了线程会自动唤醒。
wait 方法是 Object 的方法,可以让一个线程暂时挂起,并释放它所持有的锁,让其他线程可以访问共享资源。当其他线程调用 notify 或 notifyAll 方法时,被挂起的线程会被唤醒,并继续执行。wait 方法必须在同步代码块和同步方法中使用,否则会抛出 IllegalMonitorStateException 异常。
总的来说,sleep 方法是线程的静态方法,是为了让线程暂停一段时间;wait 方法是 Object 的方法,是为了线程同步,让线程等待某个条件满足后再继续执行。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论