sleep和wait的区别?
来源:互联网 发布:淘宝网半袖 编辑:程序博客网 时间:2024/05/23 18:29
sleep和wait的区别?
java中有两种线程阻塞方法:
一种是调用线程Thread的静态方法Thread.sleep(1000);另一种是调用Object的wait()方法。那么二者有什么区别哪?
1.sleep方法
1)sleep()方法是使得当前线程进入停滞状态(阻塞状态),让出CPU的使用权,目的是不让一个线程独霸进程获取的CUP资源,从而给其他线程时间使用进程获取的CPU资源
2)sleep是Thread类的静态方法,当sleep用在synchronized的同步块中时候,当前线程虽然休眠但是并没有释放同步锁机制,此时其它线程是不能访问同步块中的内容的(睡着了,也占着资源,直到休眠结束);
3)sleep时间到了休眠不一定会立即运行,因为此时其它线程正在运行,除非当前线程优先级高于其它线程;
4)sleep休眠结束的情况:1.休眠时间到了 2.线程被终止system.exit(0) 3.进程被强制终止;
2.wait
1).wait() 方法是object 对象的方法,他也是让线程阻塞,它的阻塞是将当前线程放入等待池中,同时释放了对象锁,也就是其它线程可以可以访问它的对象锁中的资源;
2)wait()必须在静态块或静态方法中使用,否则会抛出IllegalMonitorStateException异常;一般和Object的notify() 或notifyAll() 方合用,称作等待唤醒机制;
3)wait(time) 还可以设置等待的时间;
3.wait和sleep的区别:
1)作用在同步锁时候,sleep是休眠,保持对象锁 ;wait是休眠,释放对象锁
2
阅读全文
0 0
- sleep() 和 wait() 的区别
- wait()和sleep()的区别
- sleep和wait的区别
- sleep() 和 wait() 的区别
- sleep和wait的区别
- sleep和wait的区别
- wait和sleep的区别
- sleep和wait的区别
- wait()和sleep()的区别
- sleep()和wait()的区别
- wait()和sleep()的区别
- Sleep()和wait()的区别?
- sleep()和wait()的区别
- sleep和wait的区别
- wait() 和 sleep() 的区别
- sleep和wait的区别
- sleep()和wait()的区别
- sleep()和wait()的区别
- JVM系列二:GC策略&内存申请、对象衰老
- (hdu6043)KazaQ's Socks(水)
- 走近Java模块化系统OSGi
- For循环进阶使用
- 学生总结一
- sleep和wait的区别?
- 油滴扩散
- 【Oracle数据库入门】01--Oracle数据库的简单使用
- OpenCV中Mat和IplImage转换
- Sublime Text 3 快捷键总结(转载)
- Eclipse下常用的快捷键
- 常用的网页加载进度条
- HDU 6059 Kanade's trio(字典树)
- return continue break