Java并发:await/wait 与sleep、yield间的区别
来源:互联网 发布:淘宝怎么登陆不了 编辑:程序博客网 时间:2024/05/16 17:41
是否释放锁:调用sleep和yield的时候不释放当前线程所获得的锁,但是调用await/wait的时候却释放了其获取的锁并阻塞等待。
调用后何时恢复:
# sleep让线程阻塞,且在指定的时间之内都不会执行,时间到了之后恢复到就绪状态,也不一定被立即调度执行;
# yield只是让当前对象回到就绪状态,还是有可能马上被再次被调用执行。
# await/wait,它会一直阻塞在条件队列之上,之后某个线程调用对应的notify/signal方法,才会使得await/wait的线程回到就绪状态,也是不一定立即执行。
谁的方法:yield和sleep方法都是Thread类的,而wait方法是Object类的,await方法是Condition显示条件队列的。
执行环境:yield和sleep方法可以放在线程中的任意位置,而await/wait方法必须放在同步块里面,否则会产生运行时异常。
await/wait
Sleep
Yield
是否释放持有的锁
释放
不释放
不释放
调用后何时恢复
唤醒后进入就绪态
指定时间后
立刻进入就绪态
谁的方法
Condition/Object
Thread
Thread
执行环境
同步代码块
任意位置
任意位置
0 0
- Java并发:await/wait 与sleep、yield间的区别
- java await、wait与sleep和yield之间的区别
- Java中sleep(),wait(),yield()的区别
- Java wait(),yield(),sleep()的区别
- java yield(),sleep(),wait() 区别
- wait/sleep/yield的区别
- sleep, yield, wait的区别
- Java并发——函数yield(),sleep()和wait()的区别
- java 线程同步的那些事: yield(), sleep(), wait(), await(), signal(), sginalAll()
- java 线程同步的那些事: yield(), sleep(), wait(), await(), signal(), sginalAll()
- java 多线程之wait、sleep、yield区别与联系
- Java 并发编程:线程间的协作(wait/notify/sleep/yield/join)
- Java 并发编程:线程间的协作(wait/notify/sleep/yield/join) (r)
- Java 并发编程:线程间的协作(wait/notify/sleep/yield/join)(转)
- Java 并发编程:线程间的协作(wait/notify/sleep/yield/join)
- Java 并发编程:线程间的协作(wait/notify/sleep/yield/join)
- Java 并发编程:线程间的协作(wait/notify/sleep/yield/join)
- Java 并发编程:线程间的协作(wait/notify/sleep/yield/join)
- AngularJS路由实例(uiRoute、ngRoute)
- 百思不得姐框架(二)
- 互联网协议入门(1)
- ASP.NET MVC:自定义 Route 生成小写 Url
- Linux技术——gdb调试基础
- Java并发:await/wait 与sleep、yield间的区别
- 作业——在线学习Android课程之第五周
- HDU 5630 Rikka with Chess(翻棋子)
- 一、Android源码分析01-Ubuntu14.04系统Android源码下载
- #include<string>与#include<string.h>的区别
- C# TreeView控件动态组树(可控制节点级别)
- 互联网协议入门(2)
- 大师带你了解TCP基本功之滑动窗口(1)
- [Enumeration]——vector