Java 实现基于 ArrayList 的生产者 / 消费者
作者:极客罗杰
- 2024-06-18 上海
本文字数:752 字
阅读完需:约 2 分钟

总所周知,生产者/消费者是计算机操作系统经典问题,感兴趣同学可以去查阅相关资料,以下是笔者用 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
版权声明: 本文为 InfoQ 作者【极客罗杰】的原创文章。
原文链接:【http://xie.infoq.cn/article/0edfe287b5c4bedb80b3a2065】。文章转载请联系作者。
极客罗杰
关注
还未添加个人签名 2021-04-11 加入
还未添加个人简介







评论