class Producer implements Runnable { private SyncStack stack; public Producer(SyncStack stack) { this.stack = stack; } public void run() { for (int i = 0; i < stack.getProducts().length; i++) { String product = "产品"+i; stack.push(product); System.out.println("生产了: "+product); try { Thread.sleep(200); } catch(InterruptedException e) { e.printStackTrace(); } } } } class Consumer implements Runnable { private SyncStack stack; public Consumer(SyncStack stack) { this.stack = stack; } public void run() { for(int i=0;i <stack.getProducts().length;i++) { String product =stack.pop(); System.out.println("消费了: "+product); try { Thread.sleep(1000); } catch(InterruptedException e) { e.printStackTrace(); } } } } class SyncStack { private String[] products = new String[10]; private int index; public synchronized void push(String product) { if(index==product.length()) { try { wait(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } notify(); products[index]=product; index++; } public synchronized String pop() { if(index==0) { try { wait(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } notify(); index--; String product = products[index]; return product; } public String[] getProducts() { return products; } } public class TestProducerConsumer { public static void main(String[] args) { SyncStack stack=new SyncStack(); Producer p=new Producer(stack); Consumer c=new Consumer(stack); new Thread(p).start(); new Thread(c).start(); } }
发表评论
-
全排列3
2009-06-04 02:26 656public class FullArray ...{ ... -
全排列2
2009-06-04 02:09 733package com.syj.csdn; impo ... -
全排列
2009-06-04 02:07 776算法1 一个经典的全排列算法zz2007-06-1 ... -
Java排序问题
2009-04-27 20:04 734package com.softeem.jbs.lesso ... -
水仙花数
2009-04-15 21:28 1173public class StaticClass{ ... -
百钱百鸡
2009-04-15 21:27 764public class ma { public s ... -
猴子吃桃
2009-04-15 21:25 852/*public class Chitao { publ ... -
用dom4j组件解析如下XML格式的文件:
2009-04-15 21:18 802<?xml version="1.0&qu ... -
做一个饲养员给动物喂食物的例子体现JAVA中的面向对象思
2009-04-15 21:16 4917interface Animal { publ ... -
做一个单子模式的类,只加载一次属性文件
2009-04-15 21:14 1031import java.io.FileInputStrea ... -
拷贝一个目录(文件)到指定路径
2009-04-15 21:12 1021/** *拷贝一个目录或者文件到指定路径下 ... -
用JAVA中的多线程示例银行取款问题
2009-04-15 21:09 2036/** *@authorleno *账户类 * ... -
用JAVA中的多线程示例火车站售票问题
2009-04-15 21:07 2373/** *@authorleno *售票类 * ... -
编程实现序列化的Student(sno,sname)对象
2009-04-15 21:03 935import java.io.IOException; ... -
二分查找特定整数在整型数组中的位置
2009-04-15 21:00 816/** *二分查找特定整数在整型数组中的位置( ... -
获得任意一个int类型的阶乘
2009-04-15 20:59 865/** *获得任意一个整数的阶乘 ... -
将某个日期以固定格式转化成字符串
2009-04-15 20:56 885/*将某个日期以固定格式转化成字符串 ... -
一般的正弦曲线
2009-04-15 20:31 745import java.applet.*; import ... -
线程的正弦函数
2009-04-15 20:27 830import java.awt.*; import ja ... -
画星的两个方法
2009-04-14 23:26 716方法一: public class T { ...
相关推荐
本示例中的“生产者-消费者”模型是一种经典的多线程问题,它模拟了实际生产环境中的资源分配与消耗过程。下面我们将详细探讨如何在Java中实现这个模型。 首先,我们要理解生产者-消费者模型的基本概念。在这个模型...
在这个例子中,生产者和消费者可能会使用共享的数据结构(如队列)来存储和获取产品,synchronized关键字将确保在任何时候只有一个线程能执行添加或移除产品的操作。 2. **wait()和notify()方法**:这些方法位于`...
java多线程学习,生产者消费者问题示例
在Java中,我们可以利用同步机制来实现这种关系,确保生产者和消费者之间正确、有序地交互。 首先,理解生产者消费者模型的核心概念。生产者将产品放入一个共享的缓冲区,而消费者从缓冲区取出产品进行消费。关键...
### 由生产者/消费者问题深入理解JAVA多线程 #### 生产者/消费者问题概述 生产者/消费者问题是一个经典的计算机科学问题,用于展示进程间的通信与同步问题。在这个模型中,生产者负责创建数据并将其放置到共享内存...
生产者消费者模式是一种经典的多线程同步问题解决方案,它源于现实世界中的生产流水线,用于描述生产者(Producer)和消费者(Consumer)之间的协作关系。在这个模式中,生产者负责生成产品并放入仓库,而消费者则从...
在本示例中,“java多线程例子-生产者消费者”旨在展示如何利用多线程来实现生产者和消费者模式。这种模式是并发编程中的经典设计模式,用于协调生产数据和消费数据的两个不同线程。 生产者消费者模式的基本概念是...
总之,Java中的生产者-消费者模式是多线程编程中解决数据共享和同步问题的有效手段,通过合理利用`BlockingQueue`等并发工具类,我们可以构建高效、稳定的多线程应用。在开发过程中,了解和掌握这种模式有助于提高...
生产者和消费者模式是多线程编程中一个经典的设计模式,它主要解决的是在多线程环境下资源的有效利用和同步问题。在这个模式中,生产者负责生成数据,而消费者负责消费这些数据。为了保证生产与消费的平衡以及避免...
Java多线程生产者消费者模型是一种典型的线程协作模式,用于解决并发编程中资源的高效利用和同步问题。在这个模型中,"生产者"线程负责生成数据,而"消费者"线程则负责处理这些数据。为了实现这种模式,Java提供了...
Java多线程编程是开发高并发、高性能应用的关键技术之一,而生产者消费者模式是多线程编程中常用的一种设计模式。它通过分离数据的生产和消费过程,实现了线程间的协同工作,有效避免了资源的竞争和浪费。在这个模式...
在Java编程中,线程的生产者与消费者问题是多线程同步的一个典型应用场景。这个问题源自现实世界中的生产流水线,其中生产者负责制造产品,而消费者则负责消耗这些产品。在计算机系统中,生产者可以是生成数据的线程...
而生产者消费者模型是一种设计模式,用于解决资源分配和消耗的问题,它通过共享缓冲区来协调生产者和消费者线程之间的通信。 线程安全主要涉及到以下几个方面: 1. **同步机制**:Java提供了多种同步机制,如`...
1. **共享数据结构**:在这个模式中,通常会有一个线程安全的数据结构,如`ArrayBlockingQueue`,作为生产者和消费者的共享资源。生产者将产品放入队列,消费者则从队列中取出产品。 2. **生产者线程**:生产者线程...
Java线程实现的生产者和消费者程序是一种经典的多线程设计模式,用于处理并发操作中的数据共享问题。这种模式在实际编程中广泛应用,特别是在需要高效处理数据流和资源管理的系统中。以下将详细讲解其核心概念、实现...
在Java多线程编程中,消费者-生产者模型是一种经典的线程间通信模式,用于解决多线程环境下的数据共享问题。该模型涉及到两个主要的角色:生产者(Producer)和消费者(Consumer)。生产者负责创建数据,而消费者则...
在我们的例子中,有一个生产者和两个消费者,这意味着数据生成的速度和消费的速度是不同的,需要通过多线程来协调它们之间的交互。 为了实现这个模式,我们需要确保以下条件得到满足: 1. **互斥访问**:当生产者...
Java生产者消费者问题是多线程编程中的一个经典问题,它主要涉及到线程间的协作与通信。在并发编程中,生产者负责生成数据,而消费者则负责处理这些数据。为了解决生产者和消费者之间的问题,Java提供了一系列的同步...
JAVA多线程实现生产者消费者是指在JAVA编程语言中使用多线程技术来实现生产者消费者模型的实例详解。生产者消费者模型是指在计算机科学中的一种经典模式,描述了生产者和消费者之间的协作关系。在这个模型中,生产者...