//生产者A
public class ProducerA extends Thread{
// 生产一个商品
private void produceGoods() {
String goodsName = ""+System.currentTimeMillis();
Goods good = new Goods(goodsName);
synchronized (GoodsStore.getInstance().goodsList) {//同步
System.out.println("创建商品A:"+good.getGoodsName());
GoodsStore.getInstance().goodsList.add(good);
}
}
@Override
public void run() {
while(true){//循环生成商品
long sleepTime = (long) (Math.random()*1000);
try {
Thread.sleep(sleepTime);
} catch (InterruptedException e) {
e.printStackTrace();
}
this.produceGoods();
}
}
}
//生产者B
public class ProducerB extends Thread{
// 生产一个商品
private void produceGoods() {
String goodsName = "" + System.currentTimeMillis();
Goods good = new Goods(goodsName);
synchronized (GoodsStore.getInstance().goodsList) {//同步
System.out.println("创建商品B:"+good.getGoodsName());
GoodsStore.getInstance().goodsList.add(good);
}
}
@Override
public void run() {
while(true){//循环生成商品
long sleepTime = (long) (Math.random()*1000);
try {
Thread.sleep(sleepTime);
} catch (InterruptedException e) {
e.printStackTrace();
}
this.produceGoods();
}
}
}
//消费者A
public class ConsumerA extends Thread {
// 消费一个商品
private void consumerGoods() {
Goods good = GoodsStore.goodsList.getFirst();
synchronized (GoodsStore.goodsList) {
System.out.println("消费商品A:" + good.getGoodsName());
GoodsStore.goodsList.remove(good);
}
}
@Override
public void run() {
while (true) {
long sleepTime = (long) (Math.random() * 1200);
try {
Thread.sleep(sleepTime);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("仓库商品数量:" + GoodsStore.goodsList.size());
if (GoodsStore.goodsList.size() > 0) {
this.consumerGoods();
}
}
}
}
//消费者B
public class ConsumerB extends Thread {
// 消费一个商品
private void consumerGoods() {
Goods good = GoodsStore.goodsList.getFirst();
synchronized (GoodsStore.goodsList) {
System.out.println("消费商品B:" + good.getGoodsName());
GoodsStore.goodsList.remove(good);
}
}
@Override
public void run() {
while (true) {
long sleepTime = (long) (Math.random() * 1200);
try {
Thread.sleep(sleepTime);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("仓库商品数量:" + GoodsStore.goodsList.size());
if (GoodsStore.goodsList.size() > 0) {
this.consumerGoods();
}
}
}
}
//商品类
public class Goods {
private String goodsName;
public Goods(String goodsName){
this.goodsName = goodsName;
}
public String getGoodsName() {
return goodsName;
}
public void setGoodsName(String goodsName) {
this.goodsName = goodsName;
}
}
import java.util.LinkedList;
//商品仓库
public class GoodsStore {
//商品列表
public static LinkedList<Goods> goodsList;
public static GoodsStore goodsStore;
//创建单例对象
static{
goodsStore = new GoodsStore();
goodsList = new LinkedList();//构造一个空的对象
}
// 单例对象
public static GoodsStore getInstance() {
return goodsStore;
}
}
//测试类
public class Test {
public static void main(String[] args) {
System.out.println("流水线生产开始..