酷代码 AI
菜单
服务商
DeepSeek字节豆包讯飞星火
更多选项

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`方法中创建了生产者线程和消费者线程来模拟生产和消费的过程。 ######[AI写代码神器 | 523点数解答 | 2024-10-19 16:09:58]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]