介绍java多线程例子
notifyAll:唤醒同一对象监视器中调用wait的所有线程,具有最高优先级的线程首先被唤醒并执行。用于类似某个不定期的培训班终于招生满额后,通知所有学员都来上课的情况。
从上面明显可以看出wait、notify和notifyAll只能在synchronized方法中调用,记住一个对象的notify只能够唤醒被同一个对象wait的线程。 class ThreadDemo {
public static void main(String[] args) {
Buffer buf = new Buffer();
new Producer(buf).start();
new Consumer(buf).start();
}
}
class Producer extends Thread {
private Buffer buf;
public Producer(Buffer buf) {
this.buf = buf;
}
public void run() {
boolean odd = false;
while(true) {
synchronized(buf) {
if(buf.bFull)
try{buf.wait();}catch(Exception e) {}
if(odd) {
http://www.77cn.com.cn="jack";
try{Thread.sleep(100);}catch(Exception e) {} buf.sex="female";
} else {
http://www.77cn.com.cn="lucy";
try{Thread.sleep(100);}catch(Exception e) {} buf.sex="male";
}
buf.bFull = true;
buf.notify();
}
odd = !odd;
}
}
}
class Consumer extends Thread {
private Buffer buf;
public Consumer(Buffer buf) {
this.buf = buf;
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库java多线程例子(13)在线全文阅读。
相关推荐: