这是多线程同步的一个例子:
模拟某种物品的存储与取出,某一时刻只能执行一个线程。
[因为不熟悉多线程同步的应用,总感觉这个例子有点怪,有地方不合适,欢迎各位高手见到后指点一二。]
package cn.bossma.demo.thread; public class StoreControl { public static void main(String args[]) { StoreDemo sd = new StoreDemo(); CustomerDemo cd = new CustomerDemo("1", -30, sd); //取出数量线程 CustomerDemo pd = new CustomerDemo("2", 30, sd); //存储数量线程 pd.start(); cd.start(); } } class StoreDemo { String name; public static int productNumber = 0; public synchronized void store_in(int addNumber, String n) { this.name = n; if (addNumber > 0) { doNumber(addNumber); System.out.println("[Thread:" + getName() + "]放入" + addNumber); } else { int getABSNumber = Math.abs(addNumber); if (productNumber >= getABSNumber) { doNumber(addNumber); System.out.println("[Thread:" + getName() + "]取出" + getABSNumber); } else { System.out.println("[Thread:" + getName() + "]数量不足"); } } this.notifyAll(); } private void doNumber(int addNumber) { productNumber += addNumber; } public String getName() { return name; } } class CustomerDemo extends Thread { private int addNumber; StoreDemo sd; public CustomerDemo(String id, int newNumber, StoreDemo sde) { super(id); addNumber = newNumber; sd = sde; } public void run() { sd.store_in(addNumber, getName()); } }
发表评论
相关文章
国内AI资源汇总,AI聊天、AI绘画、AI写作、AI视频、AI设计、AI编程、AI音乐等,国内顺畅访问,无需科学上网。
扫码或点击进入:萤火AI大全
文章分类
最新评论