酷代码 AI
菜单
服务商

用java 语言编程计算机操作系统经典同步问题消费者问题数据结构的定义

以下是一个使用 Java 语言实现操作系统中经典的消费者问题的数据结构定义示例: ```java import java.util.LinkedList; class ConsumerProducer { private LinkedList<Integer> buffer = new LinkedList<>(); private int capacity; public ConsumerProducer(int capacity) { this.capacity = capacity; } // 生产者方法 public synchronized void produce() { while (buffer.size() == capacity) { try { wait(); } catch (InterruptedException e) { e.printStackTrace(); } } buffer.add(1); notifyAll(); } // 消费者方法 public synchronized void consume() { while (buffer.isEmpty()) { try { wait(); } catch (InterruptedException e) { e.printStackTrace(); } } buffer.removeFirst(); notifyAll(); } } public class ConsumerProducerExample { public static void main(String[] args) { ConsumerProducer cp = new ConsumerProducer(5); // 生产者线程 Thread producerThread = new Thread(() -> { for (int i = 0; i < 10; i++) { cp.produce(); System.out.println("Produced. Buffer size: " + cp.buffer.size()); try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } } }); // 消费者线程 Thread consumerThread = new Thread(() -> { for (int i = 0; i < 10; i++) { cp.consume(); System.out.println("Consumed. Buffer size: " + cp.buffer.size()); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } }); producerThread.start(); consumerThread.start(); } } ``` 在上述示例中,我们创建了一个`ConsumerProducer`类,其中使用`LinkedList`作为缓冲区,通过`synchronized`关键字和`wait()`、`notifyAll()`方法来实现生产者和消费者的同步。 在`main`方法中创建了生产者线程和消费者线程来模拟生产和消费的过程。 [2024-10-19 16:09:58 | AI写代码神器 | 523点数解答]

相关提问
实用工具查看更多
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]
数独游戏 [娱乐类]
经典推箱子 [娱乐类]
AI摸鱼五子棋 [娱乐类]