`
easyhaohao
  • 浏览: 13525 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

生产消费

阅读更多
package _procon;

public class Table {
	
	private final String[] buffer;
	
	private int tail;
	
	private int head;
	
	private int count;
	
	public Table(int size)
	{
		this.buffer = new String[size];
		this.head = 0;
		this.tail = 0;
		this.count = 0;
	}
	
	public synchronized void put(String cake) throws InterruptedException
	{
		System.out.println(Thread.currentThread().getName()+" puts "+ cake);
		while(count>=buffer.length)
		{
			wait();
		}
		
		buffer[tail] = cake;
		tail = (tail+1)%buffer.length;
		count++;
		notifyAll();
	}
	
	public synchronized String get() throws InterruptedException
	{
		while(count<=0)
		{
			wait();
		}
		String cake = buffer[head];
		head = (head+1)%buffer.length;
		count--;
		System.out.println(Thread.currentThread().getName()+" takes "+cake);
		notifyAll();
		return cake;
	}

}

package _procon;

import java.util.Random;

public class MakerThread extends Thread {

	private Random random;
	
	private final Table table;
	
	private static int id = 0;
	
	public MakerThread(String name,Table table,Random random)
	{
		super(name);
		this.random = random;
		this.table = table;
	}
	
	
	@Override
	public void run()
	{
		try {
		while(true)
		{
			Thread.sleep(random.nextInt(1000));
			String cake = "[Cake No. "+nextId()+" By "+getName()+" ]";
			table.put(cake);
		}
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}
	
	public static synchronized int nextId()
	{
		return id++;
	}
	
}

分享到:
评论

相关推荐

    生产消费者队列(c#),用于线程的队列自动同步

    本篇将详细讲解如何在C#中构建一个生产消费者队列,以及它如何帮助优化线程处理。 首先,理解生产者消费者模型的基本概念:生产者负责生成数据并放入队列,而消费者则从队列中取出数据进行处理。这种模型使得生产者...

    Java 生产消费者模式

    Java生产消费者模式是一种经典的并发设计模式,用于解决多个线程之间的协作问题。在这个模式中,生产者负责生成数据,而消费者则负责消费这些数据。它基于“缓冲区”概念,即一个有限大小的数据存储区域,生产者将...

    进程管理(生产消费者,读写者问题)

    在生产消费者问题中,我们关注的是进程之间的协作和资源管理。生产者消费者问题是一个经典的多线程同步问题,通常通过信号量机制来解决。在这个问题中,生产者进程负责生成产品并放入缓冲区,而消费者进程则从缓冲区...

    生产消费者模式的C++实现

    利用C++实现的生产消费者模式,每个生产者和消费者都在不同的线程中异步执行。

    java生产消费代码

    这是我辛辛苦苦写的java代码,关于生产消费的列子,非常好的

    执行随即机生产消费者进程

    在这个场景中,"执行随即机生产消费者进程"的标题指的是创建随机数量(在这个例子中是5个)的生产者和消费者线程,它们通过共享的缓冲区进行交互。 首先,我们需要理解生产者-消费者模型的基本原理。生产者线程负责...

    XUNHUAN.rar_labview 生产者_labview生产消费_生产者 消费者

    标题"XUNHUAN.rar_labview 生产者_labview生产消费_生产者 消费者"暗示了这个压缩包中的内容是关于LabVIEW中的一个特定编程模式——生产者/消费者模型。这种模型是一种多线程或并发编程的概念,常用于处理数据流和...

    MFC多线程程序生产消费问题

    通常,数据会被存储在一个缓冲区中,这个缓冲区的大小是有限的,因此需要确保生产者不会在缓冲区满时继续生产,同时消费者在缓冲区为空时也不会尝试消费。 在MFC中,我们可以利用CWinThread类来创建和管理线程。每...

    Java JDK1.5 生产消费者模式解决方案

    在Java编程语言中,生产者消费者模式是一种经典的多线程设计模式,用于处理并发问题。在JDK 1.5及以后的版本中,Java引入了`java.util.concurrent`包,其中包含了一些强大的并发工具类,如`Lock`接口和`Condition`...

    生产消费VS2005

    在"生产消费VS2005"中,我们可以推测这是一个使用Visual Studio 2005开发的项目,它可能包含了生产者消费者模型的实现代码和相关示例。Visual Studio 2005是微软在2005年发布的一款集成开发环境(IDE),支持C#、VB...

    pp.rar_生产消费模型

    在这个场景中,“pp.rar_生产消费模型”显然指的是一个用于演示这一概念的代码实现,具体是通过烤羊肉串模型来展示的。烤羊肉串模型是一个形象化的比喻,它将羊肉串看作是产品,厨师(生产者)负责制作羊肉串,食客...

    1111_生产消费者文件通信机制_

    在这个场景下,“生产消费者文件通信机制”是一种常见的IPC策略,尤其在C++编程中。这个机制是基于一个简单的概念:生产者进程负责生成数据,而消费者进程则负责消费这些数据。下面我们将详细讨论这种机制。 生产者...

    创业天下:让消费者变成生产消费者.pdf

    《创业天下:让消费者变成生产消费者.pdf》一文,涉及了当前电商平台、互联网商业模式的创新,特别是针对消费者角色的转变,以及新兴技术在电商系统中的应用。文章阐述了“创业天下”这款App如何通过融合分享经济、...

    linux多进程生产消费

    在Linux操作系统中,多进程生产者-消费者模型是一种常见的并发编程模式,用于处理多个进程间的协同工作,特别是在数据处理和I/O操作中。这个模型基于一个核心概念:生产者进程生成数据,而消费者进程消耗这些数据。...

    tutu766799.rar_Windows编程_labview生产消费

    这个“Windows编程_labview生产消费”项目显然采用了一个叫做“生产者-消费者”(Producer-Consumer)的设计模式。这种模式在多线程编程中非常常见,它允许不同任务之间的并行处理,提高了程序的效率和响应速度。在...

    创业天下:让消费者变成生产消费者.zip

    标题“创业天下:让消费者变成生产消费者”所涉及的核心概念是“生产消费者”理论,这是一个经济学和市场营销中的重要理念。在传统的经济模式中,消费者和生产者是两个独立的角色,但随着互联网和数字技术的发展,这...

    监听器模式(生产消费模型)

    生产消费模型是另一种编程概念,常用于多线程环境。在这个模型中,生产者负责创建数据,消费者负责消耗数据。生产者和消费者之间需要协调工作,避免生产过快导致数据堆积,或者消费过快导致无数据可消费。这通常通过...

    labview_基于生产消费者模式的多串口采集程序

    基于生产消费者模式的多串口采集程序,用labview进行上位机处理(Serial port acquisition program, based on the pattern of production of consumer PC processing using labview)

    简化生产消费者设计模式.zip

    生产消费者设计院模式是LabView中最常用的设计结构,常用在数据的采集、显示、保存中。 但是在Labview中的标准设计模式中,生产消费者模式是在一个vi中的,必须通过队列的方式连接起来。 附件的Buffer可以实现在...

    xml+properties+生产消费

    标题中的“xml+properties+生产消费”涉及到两个主要的技术领域:XML配置文件和Java中的生产者消费者模式。在Java开发中,XML常用于存储和传递结构化数据,而.properties文件则用于存储应用的配置信息。生产者消费者...

Global site tag (gtag.js) - Google Analytics