写点什么

Java 实现基于 ArrayList 的生产者 / 消费者

作者:极客罗杰
  • 2024-06-18
    上海
  • 本文字数:752 字

    阅读完需:约 2 分钟

Java实现基于ArrayList的生产者/消费者

总所周知,生产者/消费者是计算机操作系统经典问题,感兴趣同学可以去查阅相关资料,以下是笔者用 java 实现的生产者/消费者模型。


//缓冲区大小private static final int MAX_SIZE = 10;//定义缓冲区private static List<Integer> buffer = new ArrayList<Integer>(MAX_SIZE);private static Random random = new Random();
//生产者线程public class Producer extends Thread { public void run() { while(true) { synchronized(buffer) { if(buffer.size() == MAX_SIZE) { try { buffer.wait(); } catch(Exception e) { } } buffer.add(random.nextInt()); buffer.notify(); System.out.println(buffer.get(buffer.size() - 1)); } } }}
//消费者线程public class Consumer extends Thread { public void run() { while(true) { synchronized(buffer) { if(buffer.isEmpty()) { try { buffer.wait(); } catch(Exception e) { } } System.out.println(buffer.get(0)); buffer.remove(0); buffer.notify(); } } }}
//主程序public static void main(String[] args) throws Exception { ProducerConsumerArrayList pcm = new ProducerConsumerArrayList(); Consumer consumer0 = pcm.new Consumer(); Consumer consumer1 = pcm.new Consumer(); Producer producer0 = pcm.new Producer(); Producer producer1 = pcm.new Producer(); consumer0.start(); consumer1.start(); producer0.start(); producer1.start();}
复制代码


发布于: 刚刚阅读数: 8
用户头像

极客罗杰

关注

还未添加个人签名 2021-04-11 加入

还未添加个人简介

评论

发布
暂无评论
Java实现基于ArrayList的生产者/消费者_极客罗杰_InfoQ写作社区