sleep和wait的区别
2015-11-20 20:29
260 查看
sleep和wait有什么区别?
对时间的指定。
1,sleep方法必须指定时间。
2,wait方法有重载形式,可以指定时间,也可以不指定时间。
对于执行权和锁的操作.:
1,sleep():释放执行权,不释放锁,因为肯定能醒,肯定可以恢复到临时阻塞状态。
2,wait():释放执行权,释放锁,因为wait不释放锁,如果没有时间指定,那么其他线程都进行不了同步中,无法将其唤醒。
记住:同步中可以有多个存活的线程,但是只能有一个执行同步的代码。因为只有一个线程会持有同步的锁。
只有当该线程释放了锁,其他线程才会有机会获取到锁,而且只能用一个线程获取到锁,继续执行。
补充:
1、这两个方法来自不同的类分别是Thread和Object
2、最主要是sleep方法没有释放锁,而 wait 方法释放了锁,使得其他线程可以使用同步控制块或者方法。
3、wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用(使用范围)
synchronized(x){
x.notify()
//或者wait()
}
4、sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常
扩充阅读:
java 线程中的sleep和wait有一个共同作用,停止当前线程任务运行。
对时间的指定。
1,sleep方法必须指定时间。
2,wait方法有重载形式,可以指定时间,也可以不指定时间。
对于执行权和锁的操作.:
1,sleep():释放执行权,不释放锁,因为肯定能醒,肯定可以恢复到临时阻塞状态。
2,wait():释放执行权,释放锁,因为wait不释放锁,如果没有时间指定,那么其他线程都进行不了同步中,无法将其唤醒。
记住:同步中可以有多个存活的线程,但是只能有一个执行同步的代码。因为只有一个线程会持有同步的锁。
只有当该线程释放了锁,其他线程才会有机会获取到锁,而且只能用一个线程获取到锁,继续执行。
补充:
1、这两个方法来自不同的类分别是Thread和Object
2、最主要是sleep方法没有释放锁,而 wait 方法释放了锁,使得其他线程可以使用同步控制块或者方法。
3、wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用(使用范围)
synchronized(x){
x.notify()
//或者wait()
}
4、sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常
扩充阅读:
java 线程中的sleep和wait有一个共同作用,停止当前线程任务运行。
相关文章推荐
- CI框架Email类配置腾讯邮箱失败
- Centos6.7 安装Naigos教程
- 无线wifi破解利器aircrack-ng组件介绍
- 教你如何让Mac air在闭合盖子时,系统不会休眠!
- Paint和canvas的用法
- baos bais 意义
- [AlwaysOn Availability Groups]排查:AG超过RPO
- pthread_cond_wait() 前使用 while 讲解
- AEAI DP按钮权限配置说明
- AEAI DP按钮权限配置说明
- Wait函数和waitpid函数详解----很好
- [AlwaysOn Availability Groups]排查:AG超过RTO
- hdu 1151 Air Raid 匹配
- Daily Scrum - 11/20
- Factorial Trailing Zeroes
- 解决启动报错:Failed to destroy end point associated with ProtocolHandler["ajp-nio-8009"]
- Robotium 运行时Installation error INSTALL_FAILED_VERSION_DOWNGRADE错误
- UVa 442 ------ Matrix Chain Multiplication
- C语言问题 赋值表达式返回值是什么 http://zhidao.baidu.com/link?url=FrmzIbFTHGAGizJ4aBU7r93lWwOTOuVh4WLMAJ3DA0wRRnqS
- 类1调用类2的子方法不会触发类2的main方法