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]
- Java 实现复制粘贴功能:打造简易文本复制粘贴程序(GPT | 1497点数解答 | 2024-08-25 09:40:33)432
- Java实现链表反转:迭代与递归双解法详解及开发实战指南(DeepSeek | 1409点数解答 | 2026-03-15 15:09:29)57
- C语言实现:根据图书单价与数量计算应付总费用 (字节豆包 | 291点数解答 | 2024-11-04 22:11:11)344
- C++编程:图书购买费用计算及输入输出处理要点(字节豆包 | 347点数解答 | 2025-11-03 14:32:27)91
- 计算多本计算机图书总价:Python、Java、C++ 三种语言实现(字节豆包 | 1013点数解答 | 2025-12-07 17:30:24)88
- Python 编程:根据图书单价和数量精准计算应付总费用(字节豆包 | 344点数解答 | 2025-12-14 13:10:04)60
- C语言实现多班级学生信息管理系统:含增删改查与多样排序功能(GPT | 2547点数解答 | 2024-12-15 22:08:58)373
- C语言实现学生信息管理系统:含增删改查与多种排序功能(GPT | 6408点数解答 | 2024-12-15 22:10:03)368
- 解决数据库“dm.jdbc.driver.dmexception: 数据溢出”问题的全步骤指南(阿里通义 | 598点数解答 | 2024-10-15 15:48:38)330
- 达梦数据库数据溢出问题排查及多维度解决方法(阿里通义 | 403点数解答 | 2024-10-15 15:48:41)1223
- Python 实战:学生信息列表转字典、遍历、深拷贝及数据修改全流程(GPT | 422点数解答 | 2024-10-29 15:43:54)445
- Python实战:学生成绩列表转字典,深拷贝与数据修改操作全解析(字节豆包 | 254点数解答 | 2024-10-29 16:01:39)438