java多线程生产消费模式_java多线程之生产者消费者模式

生产者消费者模式的组成:

产品:生产者需要生产的产品。

生产池:根据生产池中产品的数量,确定是否进行生产和消费。

生产者:只负责给生产池生产产品。

消费者:只负责从生产池消费产品。

定义一个产品:

public class Product {

private String name;

public Product(String name) {

this.name = name;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

生产池

public class Productpool {

private List productList = null;

private int maxSize = 0;

public Productpool(int maxSize) {

this.maxSize = maxSize;

productList = new LinkedList();

}

public synchronized void push(Product product) {

if (this.productList.size() == maxSize) {

try {

this.wait();

} catch (InterruptedException e) {

e.printStackTrace();

}

}

this.productList.add(product);

System.out.println("生产了"+product.getName());

this.notifyAll();

}

public synchronized Product pop() {

if (this.productList.size() == 0) {

try {

this.wait();

} catch (InterruptedException e) {

e.printStackTrace();

}

}

Product product = this.productList.remove(0);

System.out.println("消费了"+product.getName());

this.notifyAll();

return product;

}

}

生产者:

public class Producter extends Thread {

private Productpool productpool = null;

private int i = 0;

public Producter(Productpool productpool) {

this.productpool = productpool;

}

@Override

public void run() {

while (true) {

if (i >= 100) {

break;

}

String name = ++i + "号产品";

Product product = new Product(name);

this.productpool.push(product);

}

}

}

消费者

public class Comsumer extends Thread {

private Productpool productpool = null;

public Comsumer(Productpool productpool) {

this.productpool = productpool;

}

@Override

public void run() {

while (true) {

Product p = this.productpool.pop();

}

}

}

启动类

public class Progame {

public static void main(String[] args) {

Productpool productpool = new Productpool(10);

new Producter(productpool).start();

new Comsumer(productpool).start();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值