生产者消费者 java实现_生产者消费者java实现

https://www.b2bchain.cn/6711.html

生产者,消费者解耦 BUFFER负责处理 wait notify

package sjms;

import java.util.LinkedList;

import java.util.Queue;

public class product_custom {

public static void main(String[] args) {

buffer b=new buffer();

customer c=new customer(b);

producer p=new producer(b);

c.start();

p.start();

}

//消费者

static class customer extends Thread {

buffer b=new buffer();

customer(buffer b){

this.b=b;

}

public void run(){

for (int i = 0; i <10 ; i++) {

try {

int getval= b.getit();

System.out.println("消费者取得数据"+getval);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

}

//生产者

static class producer extends Thread{

buffer b=new buffer();

producer(buffer b){

this.b=b;

}

public void run(){

for (int i = 0; i <10 ; i++) {

try {

b.add(i);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

}

//缓冲区

static class buffer {

//队列维护

Queuequeue=new LinkedList<>();

int maxsize=5;

public synchronized void add(int val) throws InterruptedException {

if(queue.size()>maxsize) wait();

queue.add(val);

notify();

}

public synchronized int getit() throws InterruptedException {

if(queue.size()==0) wait();

int val= queue.poll();

notify();

return val;

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值