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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 沈艳南 中级黑马   /  2013-5-8 14:12  /  1465 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在多线程当中wait和sleep都怎么用啊,可以互转么,求解,最好有例子说明哦!
来自: iPhone客户端

1 个回复

倒序浏览
先说下它们之间的区别:
wait( );         : 释放cpu执行权,释放锁,必须使用于多线程;(因为只有当其他线程运行到notify、notifyAll方法时才会唤醒线程池中睡眠状态的线程)
sleep( );        : 释放cpu执行权,不释放锁,即使是单线程时也能使用(因为该方法要指定时间,时间结束就自动唤醒)
两者最大的区别还是在于前者会释放锁,而后者是不释放锁,这个在多线程的同步时就很重要.
因为在多线程的同步代码区域中进入睡眠状态,两者虽然都会释放CPU执行权,但是sleep没有释放锁,那么其他线程也进不了同步区域。
另外这两者之间没什么关系,不能互转的,如果说是替换的话,在基础视频课程后面应该有教Lock锁机制,在那里面有个await方法,就是配套lock锁的Condition
来代替wait( )。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马