sleep synchronized wait notify notifyAll
来源:互联网 发布:剑网三谢云流捏脸数据 编辑:程序博客网 时间:2024/04/29 04:24
sleep 和 wait 方法都是可以让线程停一停的方法
sleep 是 Thread 的静态方法 , wait是Object的方法
由于sleep 是Thread的静态方法, sleep是让当前线程停一停。
调用对象的wait方法时, 当前线程必须已经拥有该对象的monitor (monitor 在很多资料的文档里面翻译很看不懂, Java编程思想将其翻译为对象锁)。 表现在代码上就是:
synchronized (obj) {
while (
obj.wait(timeout);
... // Perform action appropriate to condition
}
也就是说, wait方法调用的地方必须被同步块包围, 同步块的参数正是调用wait方法的对象。
wait方法被调用后, 当前线程也就暂停了下来, 同时, 该对象的所有同步锁被释放。针对这一句我的理解是, 假设有两个同步块
A)
synchronized (obj) {
... // Do some thing
}
B)
synchronized (obj) {
... // Do some thing
}
当前线程进入到同步块A时, 其它线程是不能进到同步块B的。 但是, 如果同步块里面包含有一句
obj.wait();
那么, 当前线程进入到同步块A并且执行到obj.wait();这一句时, 其它线程可以进到同步块B。
synchronized (obj) {
obj.wait();
... // Do some thing //当执行到这一句时, 实际上同步块的意义就不大了?
}
obj.notify方法会让唤醒其中一个wait的线程继续工作, 而obj.notifyAll方法会唤醒所有在obj上wait的线程继续工作。
- sleep synchronized wait notify notifyAll
- synchronized,sleep,wait,notify,notifyAll
- sleep & wait | notify | notifyAll
- sleep & wait | notify | notifyAll
- wait,notify,notifyAll,sleep
- synchronized、wait、notify、notifyAll
- wait notify notifyall synchronized
- sleep、join、yield、wait、notify、notifyAll、run、start、synchronized
- JAVA 线程状态以及synchronized,wait,sleep,yield,notify,notifyAll
- JAVA线程状态以及synchronized,wait,sleep,yield,notify,notifyAll
- Java:sleep、wait、notify、notifyAll
- 多线程wait-notify;notifyall.sleep
- wait|notify|notifyAll|sleep|volatile
- wait, sleep, notify, notifyall, join
- synchronized , wait() , notify() and notifyAll()
- java、synchronized、wait()、notify()、notifyAll()
- wait、sleep、notify、notifyAll的区别
- sleep() yield() wait() notify() notifyAll()方法
- GSM可以说的秘密(4) Provisioning与CDR处理,一个硬币的两面
- 2.1.4 printk打印消息机制
- 超链接的4个CSS属性的正确顺序
- 让您感动感悟一生的话语!
- zf工作流程
- sleep synchronized wait notify notifyAll
- Environmental Pollution
- 一个简单的回调函数模型
- 我的第一篇文章~
- smarty 对数据库的简单操作。
- 8086指令系统及易错点
- 重新开始!
- c/c++ 文件复制(拷贝)
- 一起来学周易(4)——天干地支