JAVA -- 线程wait()、notify()、notifyAll()
来源:互联网 发布:网站seo查询 编辑:程序博客网 时间:2024/05/01 00:16
这三个方法输入java.lang.Object
1、wait():导致当前的线程等待,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法。
signal.wait()的意思并不是说,signal开始wait,而是说,运行这段代码的当前线程开始wait这个signal对象,即进入signal对象的待召(Waiting)队列。wait()还可以定义等待时间,当线程在某信号量的待召队列中,等到足够长的时间,就会等无可等,无需再等,自己就从待召队列转移到就绪队列中了
2、notify():通知signal的待召队列中的某个线程,如果某个线程等到了这个通知,那个线程就会转到就绪队列中,但是本线程仍然继续拥有signal这个同步锁,本线程仍然继续执行 ,signal.notify()的意思。signal.notify()并不是通知signal这个对象本身。而是通知正在等待signal信号量的其他线程。
3、notifyAll():通知待召队列里面的所有线程
必须从同步环境内调用wait()、notify()、notifyAll()方法。线程不能调用对象上等待或通知的方法,除非它拥有那个对象的锁。
这三个方法可能出现的异常:
java.lang.IllegalMonitorStateException:违法的监控状态异常。当某个线程试图等待一个自己并不拥有的对象(O)的监控器或者通知其他线程等待该对象(O)的监控器时,抛出该异常。
public class Calculator extends Thread {
static int total;
public void run() {
for (int i = 0; i < 101; i++) {
total ++;
}
//通知所有在此对象上等待的线程 ,不拥有当前对象的监控器,不能直接调用该方法
notifyAll();
}
}
修改如下:
public class Calculator extends Thread {
static int total;
public void run() {
synchronized(this){
for (int i = 0; i < 101; i++) {
total ++;
}
//通知所有在此对象上等待的线程
notifyAll();
}
}
}
;
- java线程wait、notify、notifyAll
- JAVA -- 线程wait()、notify()、notifyAll()
- JAVA线程 -- wait notify notifyAll
- java线程:wait,notify,notifyAll
- 线程wait-notify-notifyAll
- 【java】线程同步(synchronized,wait,notify,notifyAll)
- java线程同步(synchronized,wait,notify,notifyAll)
- Java 线程wait, notify and notifyAll 示例
- Java线程中的wait, notify and notifyAll
- JAVA线程间协作:wait.notify.notifyAll
- Java 线程同步(wait、notify、notifyAll)
- java的线程通信wait(),notify(),notifyAll()
- JAVA线程间协作:wait.notify.notifyAll
- java wait notify notifyall
- JAVA 线程状态以及synchronized,wait,sleep,yield,notify,notifyAll
- Java 线程同步互斥 wait、notify、notifyall
- java线程 wait notify notifyAll必须在 synchronized中调用
- Java 线程协作 wait,notify,notifyAll,Sleep,Join,Condition
- 离散LQR:原理,求解与拓展
- 第六章 Realm及相关对象——《跟我学Shiro》
- Jplayer一个简单的播放器代码Clean jPlayer skin
- 项目执行maven update时,报:Preference node "org.eclipse.wst.validation"
- 创建SM30表维护时权限组&NC&是什么用途?
- JAVA -- 线程wait()、notify()、notifyAll()
- NYOJ-931-货物运输【floyed+路径还原】
- 黑马程序员——继承,抽象,接口
- 第七章 与Web集成——《跟我学Shiro》
- 设计模式—策略模式
- 33.画线,三角形,四边形
- 简单Profibus/DP实验系统的组建
- 第八章 拦截器机制——《跟我学Shiro》2
- ActiveMQ之消息持久化方式