sleep和wait区别(线程基本必问的)
来源:互联网 发布:歼20就是个笑话 知乎 编辑:程序博客网 时间:2024/06/05 20:53
这个问题在面试线程方面的知识时,基本上属于必问的问题。因此这里有必要做一个较为详细的总结。
区别一
首先需要明白的是这两个方法根本来自不同的类,sleep来自Thread,wait来自Object类。
sleep是Thread提供的一个静态方法,该方法出现在那个线程中,那个线程就"睡觉",并非是
调用该方法的线程睡觉,例如a线程中调用线程b.sleep(),a线程睡觉。
区别二
最为主要的区别是sleep方法没有释放“锁”,而wait方法释放了"锁"不然的话就会形成死锁了。
sleep是不让出系统资源的;wait是线程交互时,如果线程a对一个同步对象x发出一个wait
调用该线程会进入线程等待池等待,需要等其他线程调用notify/notifyAll唤醒,或者指定的时间过后
自动唤醒。
这里还需明白一点的就是无论是sleep设置的时间到了,还是wait之后被唤醒了,线程并
不一定立即恢复执行,而是触发"操作系统重新进行一次CPU竞争"。
区别三
使用范围不一样(将这作为区别略微牵强了)
wait、notify/notifyAll必须在同步控制块、同步方法里面使用。而sleep的使用在任意地方。
synchronized(x){
x.notify()
//或者wait()
}
区别四
代码表现上sleep必须捕获异常,而wait不需捕获异常。
- sleep和wait区别(线程基本必问的)
- sleep和wait区别(线程基本必问的)
- 线程的sleep和wait的区别
- wait()和线程的sleep()的区别
- 线程wait()和sleep()的区别
- 线程sleep()和wait()的区别
- java线程 sleep()和wait()的区别
- 线程中sleep和wait的区别
- JAVA -- 线程wait()和sleep()的区别
- 线程的sleep()和wait() 区别
- java线程sleep()和wait()的区别
- 线程中sleep和wait的区别
- 线程中sleep和wait的区别
- 线程中sleep()和wait()的区别
- 线程中的sleep和wait的区别
- Java线程sleep和wait的区别
- java 线程 wait和sleep的区别
- java开发线程篇2:sleep() 和 wait() 有什么区别? (做线程的必知!)
- GUI图形界面(2)
- 电子书下载网站
- tarjan 离线求 lca (专题)
- 南京网预赛 2013 Install hdu4756_Air Conditioning BY hyoga
- java中的线程同步实现方法一(将方法设置为synchronized)
- sleep和wait区别(线程基本必问的)
- Oracle 11G for Windows下载地址
- 二分查找法
- hdu1404 Digital Deletions
- uva 133 The Dole Queue
- 两个for循环的优缺点
- Jetty Continuation机制
- Good Luck in CET-4 Everybody!
- 闪回数据归档