A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ZhaoF 中级黑马   /  2015-1-15 21:22  /  1670 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

wait与sleep的区别?

9 个回复

倒序浏览
wait是object中的方法.sleep是thread中的方法.
用在多线程中.wait会放弃cpu执行权,而sleep只是暂停执行,不会放弃cpu执行权.
所以,在多线程中,如果是要让线程放弃cpu执行权,让其他线程执行,就用wait.而如果只是让线程等待一段时间,就使用sleep;

评分

参与人数 1技术分 +7 收起 理由
lwj123 + 7 回答的好

查看全部评分

回复 使用道具 举报 1 0
多看下API,说不定里面有实例,先试着自己去探究。这样会更加有成效一点
回复 使用道具 举报
sleep:必须指定时间。不释放锁对象。
wait:可以指定时间,也可以不指定时间。释放锁对象。
回复 使用道具 举报
wait是等待其他进程执行完毕后再执行,而sleep是让线程休眠一段时间后再执行和其他的进程没有关系
回复 使用道具 举报
wait 释放锁,sleep不释放锁,两个都会释放CPU执行权
回复 使用道具 举报
hanjun 中级黑马 2015-1-16 02:12:15
7#
碎流 发表于 2015-1-15 21:31
wait是object中的方法.sleep是thread中的方法.
用在多线程中.wait会放弃cpu执行权,而sleep只是暂停执行,不 ...

参考了,对我的帮助很大。
回复 使用道具 举报
油茶籽 来自手机 中级黑马 2015-1-16 07:53:18
8#
都放弃执行权,但是sleeo没释放锁对象,如果用的是同一个锁对象,其他程序是无法抢到执行权的
回复 使用道具 举报
网上基本谈的都是自己的理解,都会有点偏差,去看源码的解释吧!
回复 使用道具 举报
sleep()方法属于Thread类中的,wait()方法属于Object类中的。
sleep()方法导致程序暂停执行指定的时间,让出cpu执行权给其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态,是可以自动恢复运行状态的,不会释放对象锁。
wait()会释放对象锁,进入等待此对象的等待锁定池,只有针对此对象调用notify()方法后本线程才进入对象锁定池准备获取对象锁进入运行状态。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马