博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
生产者—消费者模式示例
阅读量:6565 次
发布时间:2019-06-24

本文共 1840 字,大约阅读时间需要 6 分钟。

package producerAndCustomer;import java.util.ArrayList;import java.util.List;public class Plate {    private List apples = new ArrayList();    public synchronized void putApple(Object apple){        if(apples.size()>0){            try {                wait();            } catch (InterruptedException e) {                // TODO: handle exception                e.printStackTrace();            }        }        apples.add(apple);        notify();        System.out.println("放了一个苹果");    }    public synchronized void getApple(){        if(apples.size()==0){            try {                wait();            } catch (InterruptedException e) {                // TODO: handle exception                e.printStackTrace();            }        }        Object apple = apples.get(0);        apples.clear();        notify();        System.out.println("get了一个红苹果");            }    }
package producerAndCustomer;public class Add implements Runnable {    private Plate applePlate;    private Object apple = new Object();    public Add(Plate applePlate){        this.applePlate = applePlate;    }    @Override    public void run() {        // TODO Auto-generated method stub        for(int i = 0 ;i<5;i++){            applePlate.putApple(apple);        }    }}
package producerAndCustomer;public class Get implements Runnable {    private Plate applePlate;    public Get(Plate applePlate){        this.applePlate = applePlate;    }    @Override    public void run() {        // TODO Auto-generated method stub        for(int i=0;i<5;i++){            applePlate.getApple();        }    }}
package producerAndCustomer;public class SynchroTest {	public static void main(String args[]){		Plate myPlate = new Plate();		new Thread(new Get(myPlate)).start();		new Thread(new Add(myPlate)).start();	}}

  

转载于:https://www.cnblogs.com/Keven02/p/7410381.html

你可能感兴趣的文章
《Python Cookbook(第2版)中文版》——1.11 检查一个字符串是文本还是二进制
查看>>
Tkinter之Label
查看>>
Java操作redis
查看>>
PostgreSQL merge json的正确姿势
查看>>
java反射
查看>>
【IOS-COCOS2D游戏开发之二】COCOS2D 游戏开发资源贴(教程以及源码)
查看>>
nodejs安装记录
查看>>
Android2.2 API 中文文档系列(9) —— ZoomButton
查看>>
pcDuino 刷系统-卡刷
查看>>
MySQL结构自动同步工具-schemasync
查看>>
关于在线代码运行网站的一个想法
查看>>
我的友情链接
查看>>
使用subeclipse来管理分支/标记
查看>>
我的友情链接
查看>>
django forms模块使用
查看>>
FreeBSD IPFW 防火墙的安装和设置
查看>>
Linux分区和文件系统 ⑥
查看>>
ClipDrawable--水漫起来的效果
查看>>
python中的import
查看>>
osd内的pg数量
查看>>