时间:2021-05-20
Object类中的wait和notify方法(生产者和消费者模式) 不是通过线程调用
生产者和消费者模式 生产线程和消费线程达到均衡
wait方法和notify方法建立在synchronized线程同步的基础之上
实现生产者和消费者模式 仓库容量为10
代码如下
import java.util.ArrayList;public class Test_14 { public static void main(String[] args) { ArrayList list = new ArrayList(); Thread t1 = new Thread(new ProducerThread(list)); t1.setName("producer"); Thread t2 = new Thread(new ConsumerThread(list)); t2.setName("consumer"); t1.start(); t2.start(); }}//生产者线程class ProducerThread implements Runnable{ private ArrayList arrayList; public ProducerThread(ArrayList arrayList) { this.arrayList = arrayList; } @Override public void run() { while (true) { synchronized (arrayList) { if (arrayList.size() > 9){ try { arrayList.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } arrayList.add(new Object()); System.out.println(Thread.currentThread().getName() + "---> 生产" + "---库存" + arrayList.size()); arrayList.notify(); } } }}//消费者线程class ConsumerThread implements Runnable{ private ArrayList arrayList; public ConsumerThread(ArrayList arrayList) { this.arrayList = arrayList; } @Override public void run() { while (true){ synchronized (arrayList){ if (arrayList.size() < 9){ try { arrayList.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } arrayList.remove(0); System.out.println(Thread.currentThread().getName() + "---> 消费" + "---库存" + arrayList.size()); arrayList.notify(); } } }}以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
wait(),notify(),notifyAll()不属于Thread类,而是属于Object基础类,也就是说每个对象都有wait(),notify(),no
wait、notify和notifyAll方法是Object类的finalnative方法。所以这些方法不能被子类重写,Object类是所有类的超类,因此在程序
wait(),notify()和notifyAll()都是java.lang.Object的方法:wait():Causesthecurrentthreadto
wait(),notify(),notifyAll()等方法介绍在Object.java中,定义了wait(),notify()和notifyAll()等接口。
Java中Object的wait()notify()notifyAll()方法使用一、前言 对于并发编程而言,除了Thread以外,对Object对象的wat