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#中构建一个生产消费者队列,以及它如何帮助优化线程处理。 首先,理解生产者消费者模型的基本概念:生产者负责生成数据并放入队列,而消费者则从队列中取出数据进行处理。这种模型使得生产者...
Java生产消费者模式是一种经典的并发设计模式,用于解决多个线程之间的协作问题。在这个模式中,生产者负责生成数据,而消费者则负责消费这些数据。它基于“缓冲区”概念,即一个有限大小的数据存储区域,生产者将...
在生产消费者问题中,我们关注的是进程之间的协作和资源管理。生产者消费者问题是一个经典的多线程同步问题,通常通过信号量机制来解决。在这个问题中,生产者进程负责生成产品并放入缓冲区,而消费者进程则从缓冲区...
《广东能源生产消费统计2020年--能源平衡表》是关于广东省2019年度能源生产和消费情况的详细报告。这份统计表主要涵盖了以下几个关键方面: 1. **能源供应**:广东的能源供应包括本地生产和外部调入两部分。2019年...
利用C++实现的生产消费者模式,每个生产者和消费者都在不同的线程中异步执行。
这是我辛辛苦苦写的java代码,关于生产消费的列子,非常好的
在这个场景中,"执行随即机生产消费者进程"的标题指的是创建随机数量(在这个例子中是5个)的生产者和消费者线程,它们通过共享的缓冲区进行交互。 首先,我们需要理解生产者-消费者模型的基本原理。生产者线程负责...
标题"XUNHUAN.rar_labview 生产者_labview生产消费_生产者 消费者"暗示了这个压缩包中的内容是关于LabVIEW中的一个特定编程模式——生产者/消费者模型。这种模型是一种多线程或并发编程的概念,常用于处理数据流和...
通常,数据会被存储在一个缓冲区中,这个缓冲区的大小是有限的,因此需要确保生产者不会在缓冲区满时继续生产,同时消费者在缓冲区为空时也不会尝试消费。 在MFC中,我们可以利用CWinThread类来创建和管理线程。每...
在Java编程语言中,生产者消费者模式是一种经典的多线程设计模式,用于处理并发问题。在JDK 1.5及以后的版本中,Java引入了`java.util.concurrent`包,其中包含了一些强大的并发工具类,如`Lock`接口和`Condition`...
在"生产消费VS2005"中,我们可以推测这是一个使用Visual Studio 2005开发的项目,它可能包含了生产者消费者模型的实现代码和相关示例。Visual Studio 2005是微软在2005年发布的一款集成开发环境(IDE),支持C#、VB...
在这个场景中,“pp.rar_生产消费模型”显然指的是一个用于演示这一概念的代码实现,具体是通过烤羊肉串模型来展示的。烤羊肉串模型是一个形象化的比喻,它将羊肉串看作是产品,厨师(生产者)负责制作羊肉串,食客...
在这个场景下,“生产消费者文件通信机制”是一种常见的IPC策略,尤其在C++编程中。这个机制是基于一个简单的概念:生产者进程负责生成数据,而消费者进程则负责消费这些数据。下面我们将详细讨论这种机制。 生产者...
《创业天下:让消费者变成生产消费者.pdf》一文,涉及了当前电商平台、互联网商业模式的创新,特别是针对消费者角色的转变,以及新兴技术在电商系统中的应用。文章阐述了“创业天下”这款App如何通过融合分享经济、...
在Linux操作系统中,多进程生产者-消费者模型是一种常见的并发编程模式,用于处理多个进程间的协同工作,特别是在数据处理和I/O操作中。这个模型基于一个核心概念:生产者进程生成数据,而消费者进程消耗这些数据。...
这个“Windows编程_labview生产消费”项目显然采用了一个叫做“生产者-消费者”(Producer-Consumer)的设计模式。这种模式在多线程编程中非常常见,它允许不同任务之间的并行处理,提高了程序的效率和响应速度。在...
标题“创业天下:让消费者变成生产消费者”所涉及的核心概念是“生产消费者”理论,这是一个经济学和市场营销中的重要理念。在传统的经济模式中,消费者和生产者是两个独立的角色,但随着互联网和数字技术的发展,这...
生产消费模型是另一种编程概念,常用于多线程环境。在这个模型中,生产者负责创建数据,消费者负责消耗数据。生产者和消费者之间需要协调工作,避免生产过快导致数据堆积,或者消费过快导致无数据可消费。这通常通过...
基于生产消费者模式的多串口采集程序,用labview进行上位机处理(Serial port acquisition program, based on the pattern of production of consumer PC processing using labview)
生产消费者设计院模式是LabView中最常用的设计结构,常用在数据的采集、显示、保存中。 但是在Labview中的标准设计模式中,生产消费者模式是在一个vi中的,必须通过队列的方式连接起来。 附件的Buffer可以实现在...