java多线程基础(一)--sleep和wait的区别
2024-08-30 12:07:47
sleep和wait的区别有:
1、这两个方法来自不同的类分别是Thread和Object;
2、最主要是sleep方法没有释放锁,而wait方法释放了锁,使得线程可以使用同步控制块或者方法;
3、wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用
synchronized(x){
x.notify()
//或者wait()
}
sleep不出让系统资源;wait是进入线程等待池等待,让出系统资源线程可以占用CPU。一般wait不会加时间限制,因为如果wait线程的运行资源不够,再出来也没用,要等待线程调用notify/notifyAll唤醒等待池中的所有线程,才会进入就绪队列等待OS分配系统资源。sleep(milliseconds)可以用时间指定使它自动唤醒过来,如果时间不到只能调用interrupt()强行打断。
Thread.Sleep(0)的作用是“触发操作系统立刻重新进行一次CPU竞争”;
4、sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常; 修改于2019.7.24
最新文章
- Express4.x常用API(一):res
- 在Web api2 中传递复杂参数的一点心得
- Cocos2d-x 学习资料推荐
- UML类图关系大全
- 简单模拟struts2及struts2的处理流程介绍
- PBRT笔记(13)——光线传播1:表面反射
- c#Socket Tcp服务端编程
- 使用Typescript实现依赖注入(DI)
- 动态库的链接和链接选项-L,-rpath-link,-rpath
- hibernate映射(学生-科目-成绩)
- 何为编码 GBK 和 UTF8编码?GBK,GB2312与区位码有何关系?
- python中复数的几件事儿
- [python]关于在python中模块导入问题追加总结
- 斯坦福大学CS224d课程目录
- ibatis 批量更新(二)
- Oracle VM VisualBox 虚拟机创建共享文件夹。
- 安装autoit libary失败问题解决
- mysql主从复制(简单直观)
- hadoop-2.7.1:Error: Cannot find configuration directory: /etc/hadoop
- My First