package cn.smallbug.thread; /** * 资源定义 * * @timestamp Feb 13, 2016 11:55:10 PM * @author smallbug */ class Resource { private String name; private int age = 0; private boolean flag = false; public synchronized void setShow(String name) { while (flag) try { this.wait(); } catch (InterruptedException e) { } this.name = name + age++; System.out.println("~~~~~~" + Thread.currentThread().getName() + "~~生产者~~~~" + this.name); flag = true; this.notifyAll(); } /** * 生产者 * * @timestamp Feb 13, 2016 11:55:24 PM */ public synchronized void getShow() { while (!flag) try { this.wait(); } catch (InterruptedException e) { } System.out.println("~~~消费者~~~" + Thread.currentThread().getName() + "~~~~~~" + this.name); flag = false; this.notifyAll(); } } /** * 生产者 * * @timestamp Feb 13, 2016 11:55:30 PM * @author smallbug */ class Production implements Runnable { private Resource r; Production(Resource r) { this.r = r; } @Override public void run() { while (true) { r.setShow("小虫"); } } } /** * 消费者 * * @timestamp Feb 14, 2016 12:17:29 AM * @author smallbug */ class Consumer implements Runnable { private Resource r; Consumer(Resource r) { this.r = r; } @Override public void run() { while (true) { r.getShow(); } } } public class WaitAwake { public static void main(String[] args) { Resource re = new Resource(); Production p = new Production(re); Consumer c = new Consumer(re); Thread t1 = new Thread(p); Thread t2 = new Thread(c); t1.start(); t2.start(); } }
相关推荐
在Java编程中,"线程同步--生产者消费者问题"是一个经典的多线程问题,它涉及到如何有效地在多个线程之间共享资源。这个问题通常用于演示和理解线程间的协作机制,如互斥锁、条件变量等。在此,我们将深入探讨这个...
生产者消费者模型是一种经典的线程同步问题,它模拟了实际生活中的生产过程和消费过程,使得生产者线程可以将数据生产出来,而消费者线程则负责消耗这些数据,两者之间通过共享数据结构进行协同工作。 生产者消费者...
在 Java 中,我们可以使用多线程编程和同步机制来实现生产者-消费者模型。 生产者-消费者模型的定义 生产者-消费者模型是一种同步机制,用于解决多线程之间的数据共享和访问问题。生产者负责生产数据,并将其存储...
本示例中的“生产者-消费者”模型是一种经典的多线程问题,它模拟了实际生产环境中的资源分配与消耗过程。下面我们将详细探讨如何在Java中实现这个模型。 首先,我们要理解生产者-消费者模型的基本概念。在这个模型...
在并发编程中,"生产者-消费者"模式是一种经典的解决问题的范式,用于协调两个或更多线程间的协作,其中一部分线程(生产者)生成数据,另一部分线程(消费者)消费这些数据。 生产者-消费者模型的核心在于共享资源...
操作系统中的生产者-消费者问题是多线程编程中的经典案例,主要用来展示线程同步和通信的概念。在这个Java实现中,我们将深入理解这个问题的背景、原理以及如何通过Java的并发工具来解决。 生产者-消费者问题的基本...
在计算机科学中,生产者-消费者问题是多线程编程中的一个经典问题,它涉及到了并发控制、线程同步以及共享资源的有效管理。该问题描述了两个角色:生产者(Producer)负责生成数据,而消费者(Consumer)则负责处理...
操作系统中的“生产者-消费者”问题是一个经典的多线程同步问题,主要涉及到进程通信和资源管理。在这个Java源代码示例中,它演示了如何利用Java的并发特性来解决这个问题。下面将详细介绍这个知识点。 首先,我们...
在Java编程中,生产者消费者问题是多线程同步的一个经典示例,用于演示如何有效地管理共享资源。这个问题的核心在于,生产者线程负责创建产品并放入缓冲区,而消费者线程则负责从缓冲区取出产品进行消费。为了保证...
基本满足操作系统课上要求,java实现的生产者消费者模型。
Java生产者消费者模型是多线程编程中一种经典的并发控制模型,它源于操作系统中的哲学思想,用于解决资源的共享和异步处理问题。在该模型中,"生产者"线程负责生成数据,而"消费者"线程则负责消费这些数据。两者之间...
生产者与消费者问题在计算机科学中是一个经典的多线程同步问题,主要涉及到进程间的通信和资源的共享。在Java中,我们通常通过`wait()`、`notify()`和`notifyAll()`这三个方法,以及`synchronized`关键字来解决这个...
在Java编程中,"生产者消费者"模式是一种典型的多线程问题解决模型,它通过共享资源来协调生产者和消费者之间的操作。这个模式的核心在于如何有效地管理资源的生产和消费,以避免生产过快导致资源浪费,或者消费者...
在CSDN.NET博客文章中,作者详细讨论了如何使用线程同步和等待的应用来解决此问题,并提供了示例代码ProducerConsumer.java和ProducerConsumerx.java,这些代码可以帮助读者更好地理解和实现生产者消费者模型。...
3. **编写消费者线程**:创建一个名为 `Consumer.java` 的类,实现消费者的逻辑。在这个类中,使用循环来模拟消费过程,并使用信号量确保只有在缓冲区中有数据的情况下才进行消费。 4. **编写测试类**:创建一个名为...
生产者消费者问题是多线程编程中的经典模型,用于展示如何在并发环境中协调生产者和消费者之间的数据处理。在这个问题中,生产者线程负责生成数据,而消费者线程则负责消费这些数据。Java语言提供了丰富的工具来解决...
在Java编程中,"生产者-消费者"模型是一种常见的多线程问题,它涉及到进程间的同步与通信。在这个模型中,生产者线程负责生成数据并放入缓冲区,而消费者线程则负责从缓冲区取出数据进行处理。这里的"车库"例子就是...
在Java编程中,生产者-消费者模型是一种经典的多线程问题解决方案,用于处理并发操作中的数据共享和资源管理。这个模型通常由四个主要组件构成:生产者、消费者、存储(或缓冲区)以及可能的市场规则。根据提供的...
生产者-消费者问题是这种并发模型的一个经典案例,它涉及到如何在多个线程间共享资源,确保数据的一致性和正确性。在这个场景中,生产者线程负责生成数据并放入一个有限的缓冲区,而消费者线程则负责从缓冲区取出...