java中的sleep和wait的区别
sleep和wait的区别:
1、sleep的意思是:睡,睡觉,睡眠。
2、wait的意思是:等候,推迟,延缓等待,耽搁,伺候用餐。
拓展资料
sleep的用法
1、They were exhausted from lack of sleep
由于缺乏睡眠,他们非常疲惫。
2、During the car journey, the baby slept
坐车来的路上,宝宝睡着了。
3、I think he may be ready for a sleep soon.
我想他也许很快就要睡一觉了。
4、I can't get to sleep with all that singing.
那些歌声搅得我无法入睡。
5、I didn't lose too much sleep over that investigation.
我并不太担心那个调查。
wait
1、I walk to a street corner and wait for the school bus
我走到街角等校车。
2、There'll be a car waiting for you
会有辆汽车等你。
3、I want to talk to you, but it can wait
我想和你谈谈,但可以晚点再说。
4、If you think this all sounds very exciting, just wait until you read the book
如果你觉得所有这些听起来令人兴奋,那就等着去读这本书吧。
5、'Wait a minute!' he broke in. 'This is not giving her a fair hearing!'
“等一下,”他插嘴说,“这没有给她一个公平的解释机会!”
它们最大本质的区别是:sleep()不释放同步锁,wait()释放同步锁.
还有用法的上的不同是:sleep(milliseconds)可以用时间指定来使他自动醒过来,如果时间不到你只能调用interreput()来强行打断;wait()可以用notify()直接唤起.
sleep和wait的区别还有:
1、这两个方法来自不同的类分别是Thread和Object;
2、最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他
可以使用
块或者方法;
3、wait,notify和notifyAll只能在
方法或者
块里面使用,而sleep可以在
任何地方使用
synchronized(x){
x.notify()
//或者wait()
}
4、sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常。
sleep是Thread的静态类方法,谁调用的谁去睡觉,即使在a线程里调用b的sleep方法,实际上还是a去睡觉,要让b线程睡觉要在b的代码中调用sleep。
2. 锁: 最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。
sleep
不出让系统资源;wait是进入线程等待池等待,出让系统资源,其他线程可以占用CPU。一般wait不会加时间限制,因为如果wait线程的运行资源不
够,再出来也没用,要等待其他线程调用notify/notifyAll唤醒等待池中的所有线程,才会进入就绪队列等待OS分配系统资源。
sleep(milliseconds)可以用时间指定使它自动唤醒过来,如果时间不到只能调用interrupt()强行打断。
Thread.sleep(0)的作用是“触发操作系统立刻重新进行一次CPU竞争”。
3. 使用范围:wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用。
synchronized(x){
x.notify()
//或者wait()
}
--http://blog.csdn.net/shineflowers/article/details/40047479