这是多线程同步的一个例子:
模拟某种物品的存储与取出,某一时刻只能执行一个线程。
[因为不熟悉多线程同步的应用,总感觉这个例子有点怪,有地方不合适,欢迎各位高手见到后指点一二。]
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大全
文章分类
最新评论