线程间通讯,多生产者多消费者模型
多生产者多消费者 , 生产一个数据,消费一个数据
public class ProduceConsumer{ public int i = 0; final private Object lock = new Object(); public volatile boolean isProduce = false; public void produce() { synchronized (lock) { while(isProduce) { try { lock.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } i ++; System.out.println(Thread.currentThread().getName() + "生产数据"+ i); isProduce = true; lock.notifyAll(); } } public void consumer() { synchronized (lock) { while(!isProduce) { try { lock.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } System.out.println(Thread.currentThread().getName() + "消费数据"+ i); isProduce = false; lock.notifyAll(); } } public static void main(String[] args) { ProduceConsumer pc = new ProduceConsumer(); Stream.of("【生产者一】","【生产者二】").forEach((n)-> { new Thread(n) { @Override public void run() { while(true) { pc.produce(); } } }.start(); } ); Stream.of("【消费者一】","【消费者二】","【消费者三】").forEach((n)-> { new Thread(n) { @Override public void run() { while(true) { pc.consumer(); } } }.start(); } ); } }
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

更多精彩