sleep()和wait()有什么区别。 sleep()不释放资源,wait()释放资源也就是sleep的时候线程如果有锁住什么资源 这个时候是不可以被访问的 而wait可以 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 sleep是暂停wait是等待。两个东西完全不一样。简单的说是sleep只是让程序停一会,而wait是等待一定时间或等待到其结束。 请问wait()在哪里呀?我怎么找不着呀 sleep和wait都是使线程暂时停止执行的方法,但它们有很大的不同,sleep是线程类Thread 的方法,它是使当前线程暂时睡眠,可以放在任何位置。而wait是Object类的方法,它是使当前线程暂时放弃对象的使用权进行等待,必须放在同步方法或同步块里。Sleep使用的时候,线程并不会放弃对象的使用权,即不会释放对象锁,所以在同步方法或同步块中使用sleep,一个线程访问时,其他的线程也是无法访问的。而wait是会释放对象锁的,就是当前线程放弃对象的使用权,让其他的线程可以访问。线程执行wait方法时,需要另一个线程调用notify进行唤醒。而sleep只是暂时休眠一定时间,时间到了之后,自动恢复运行,不需另外的线程唤醒。 sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)“醒来”的线程具有更高的优先级(b)正在运行的线程因为其它原因而阻塞。wait()是线程交互时,如果线程对一个同步对象x 发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。 sleep方法是让当前线程等待特定时间(由sleep参数决定)而wait方法是等待知道别的线程给你发信号,你接收到信号后可以继续往下走 sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行.除非(a)“醒来”的线程具有更高的优先级(b)正在运行的线程因为其它原因而阻塞。wait()是线程交互时,如果线程对一个同步对像x 发出一个wait()调用该线程会暂停执行,被调对像进入等待状态,直到被唤醒或等待时间到。 最简单的解释:Wait()是等待别人释放资源Sleep()是自己占用资源,去做等待~ 从操作系统的角度讲,os会维护一个ready queue(就绪的线程队列)。并且在某一时刻cpu只为ready queue中位于队列头部的线程服务。 但是当前正在被服务的线程可能觉得cpu的服务质量不够好,于是提前退出,这就是yield。 或者当前正在被服务的线程需要睡一会,醒来后继续被服务,这就是sleep。 sleep方法不推荐使用,可用wait。 线程退出最好自己实现,在运行状态中一直检验一个状态,如果这个状态为真,就一直运行,如果外界更改了这个状态变量,那么线程就停止运行。 sleep()使当前线程进入停滞状态,所以执行sleep()的线程在指定的时间内肯定不会执行;yield()只是使当前线程重新回到可执行状态,所以执行yield()的线程有可能在进入到可执行状态后马上又被执行。 sleep()可使优先级低的线程得到执行的机会,当然也可以让同优先级和高优先级的线程有执行的机会;yield()只能使同优先级的线程有执行的机会。 当调用wait()后,线程会释放掉它所占有的“锁标志”,从而使线程所在对象中的其它synchronized数据可被别的线程使用。 sleep方法是让当前线程等待特定时间(由sleep参数决定)而wait方法是等待知道别的线程给你发信号,你接收到信号后可以继续往下走 在同一时间同一台电脑上,如何使程序只可以运行一个实体, 添加对程序集的引用? C#新手送分来了 读取保存XML的问题 有没有这样一个文本框,就是文本框中的某个字符删除时该字符后面的所有字符都不会往前移 从多表中查数据填充到GridView中同一列 string::iterator fen_p = fen.begin(); 求一文件的算法,顶者有分。谢谢 有关异常问题 關開TreeView控件的一點小問題??? C#中的问题 给大家分享一个c#短信接口实例
简单的说是sleep只是让程序停一会,而wait是等待一定时间或等待到其结束。
,但它们有很大的不同,sleep是线程类Thread 的方法,
它是使当前线程暂时睡眠,可以放在任何位置。
而wait是Object类的方法,它是使当前线程暂时放弃对象的使用权进行等待,
必须放在同步方法或同步块里。
Sleep使用的时候,线程并不会放弃对象的使用权,即不会释放对象锁,所以在同步方法或同步块中使用sleep,一个线程访问时,其他的线程也是无法访问的。
而wait是会释放对象锁的,就是当前线程放弃对象的使用权,让其他的线程可以访问。
线程执行wait方法时,需要另一个线程调用notify进行唤醒。
而sleep只是暂时休眠一定时间,时间到了之后,自动恢复运行,不需另外的线程唤醒。
(b)正在运行的线程因为其它原因而阻塞。
wait()是线程交互时,如果线程对一个同步对象x 发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。
而wait方法是等待知道别的线程给你发信号,你接收到信号后可以继续往下走
在sleep 时间间隔期满后,线程不一定立即恢复执行。
这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行.
除非(a)“醒来”的线程具有更高的优先级(b)正在运行的线程因为其它原因而阻塞。
wait()是线程交互时,如果线程对一个同步对像x 发出一个wait()调用
该线程会暂停执行,被调对像进入等待状态,直到被唤醒或等待时间到。
Wait()是等待别人释放资源
Sleep()是自己占用资源,去做等待~
而wait方法是等待知道别的线程给你发信号,你接收到信号后可以继续往下走