美文网首页
生产者消费者模型(java)

生产者消费者模型(java)

作者: Theodore的技术站 | 来源:发表于2018-11-28 17:05 被阅读11次

基本数据类:

public class PCData{
    private long value;
    public void set(long value){
        this.value = value;
    }
    public long get(){
        return value;
    }
}

生产者:

import java.util.List;
import java.util.Random;

public class Producer implements Runnable{
    private List<PCData> queue;
    private long length;

    public Producer(List<PCData> queue, long length) {
            this.queue = queue;
            this.length = length;
    }
    @Override
    public void run() {
        // TODO Auto-generated method stub
        try {
            while(true) {
                if(Thread.currentThread().isInterrupted())
                    break;
                Random r = new Random();
                long tmp = r.nextInt(100);
                System.out.println(Thread.currentThread().getId() + "生产了" + tmp);
                PCData data = new PCData();
                data.set(tmp);
                if(queue.size() >= length) {
                    queue.notifyAll();
                    queue.wait();
                }else {
                    queue.add(data);
                }
            }
            Thread.sleep(1000);
        }catch(InterruptedException e){
            e.printStackTrace();
        }
    }
}

消费者:

package version2;
import java.util.List;

public class Consumer implements Runnable{
    private List<PCData> queue;
    
    @Override
    public void run() {
        // TODO Auto-generated method stub
        try {
            while(true) {
                if(Thread.currentThread().isInterrupted())
                    break;
                PCData data = null;
                synchronized (queue) {
                    if(queue.size() == 0) {
                        queue.wait();
                        queue.notifyAll();
                    }
                    data = queue.remove(0);
                }
                System.out.println(Thread.currentThread().getId() + "消费了" + data.get());
            }
            Thread.sleep(1000);
        }catch(InterruptedException e) {
            e.printStackTrace();
        }
    }
    
}

Main:

package ProducterAndConsumer.Version2;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class Main {
    public static void main(String[] args) {
        List<PCData> queue = new ArrayList<PCData>();
        int length = 10;
        Producer p1 = new Producer(queue,length);
        Producer p2 = new Producer(queue,length);
        Producer p3 = new Producer(queue,length);
        Consumer c1 = new Consumer(queue);
        Consumer c2 = new Consumer(queue);
        Consumer c3 = new Consumer(queue);
        ExecutorService service = Executors.newCachedThreadPool();
        service.execute(p1);
        service.execute(p2);
        service.execute(p3);
        service.execute(c1);
        service.execute(c2);
        service.execute(c3);
        
    }
}

相关文章

  • Java生产者/消费者模型的一种实现

    本文主要介绍java中生产者/消费者模式的实现,对java线程锁机制的一次深入理解。 生产者/消费者模型 生产者/...

  • Java 实现生产者和消费者的三种方法

    Java 实现生产者和消费者的三种方法 生产者消费者模型是我们讨论同步问题里面必须要学习的,生产者和消费者公用一块...

  • 34.Python之生产者消费者模型

    Python之生产者消费者模型(非常重要) 生产者消费者模型模型指的是一种解决问题的套路。 生产者消费者模型中包含...

  • 生产者和消费者模型

    生产者和消费者模型 1. 什么是生产者和消费者模型 生产者消费者模型具体来讲,就是在一个系统中,存在生产者和消费者...

  • 生产者消费者(一)

    生产者消费者模型: 生产者------> 缓存<-------- 消费者

  • Future

    Future 模式只是生产者-消费者模型的扩展。经典“生产者-消费者”模型中消息的生产者不关心消费者何时处理完该条...

  • python入门开发学习笔记之掌握什么是生产者消费者模型

    本节重点 熟练掌握什么是生产者消费者模型熟练掌握为什么要用生产者消费者模型熟练掌握如何实现生产者消费者模型本节时长...

  • Java实现生产者-消费者模型

    考查Java的并发编程时,手写“生产者-消费者模型”是一个经典问题。有如下几个考点: 对Java并发模型的理解 对...

  • wait/notify实现生产者消费者(6)

    生产者消费者模型 生产者消费者模型是一个典型的多线程问题,涉及生产者、消费者、产品仓库。生产者生产的产品放入仓库中...

  • 生产者消费者

    生产者/消费者模式(阻塞队列) 生产者消费者模型的实现

网友评论

      本文标题:生产者消费者模型(java)

      本文链接:https://www.haomeiwen.com/subject/qwlzqqtx.html