`
李媛媛liyuanyuan
  • 浏览: 15179 次
  • 性别: Icon_minigender_2
社区版块
存档分类
最新评论

生产与消费者模型

阅读更多
生产者消费者模型
四步骤
生产者在仓满时等待,空仓则生产
消费者在仓满时取物,在仓空时等待
生产者在仓空时生产并通知消费者消费
消费者在仓满时取出产品并通知生产者

其实就我个人的认识与理解,生产者与消费者就是对于同一件东西或资源进行操作。生产者生成,消费者对其生成的东西进行消费

这里我给一个简单的生产消费模型:
生产者:
public class produce extends Thread{
	
	//声明一个队列对象,用来存储
	private LinkedList list ;
	int count =0 ;
	/**
	 *构造器 
	 *
	 */
	public produce(LinkedList list){
		this.list = list ;
	}
	
	
	/**
	 *重写run方法
	 */
	public void run(){
		while(true){
		try {
			Thread.sleep(1000);
			
		} catch (InterruptedException e) {
			
			e.printStackTrace();
		}
		synchronized(list){
			
			while(list.size()==0){
				//生产产品
				Box box = new Box();
				box.id = ++count;
				box.name = "app"+box.id;
				list.add(box);
				
				list.notify();
			}
			while(list.size()>0){
				try {
					list.wait();
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				
				
			}
			
			
			
		}
		
		}
	}
	
	

}


消费者:
public class customer extends Thread{
	//声明一个队列来存储
	private LinkedList list ;
	
	
	/**
	 * 构造方法
	 */
	
	public customer(LinkedList list){
		
		this.list = list ;
	
	} 
	public void run(){
		
		while(true){
		synchronized (list) {
			
			//判断队列是否为空
			while(list.size()==0){
				try {
					list.wait();
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				
				
			}
			while(list.size()>0){
				
				System.out.println("消费者拿走了产品!"+ list.getFirst().toString() );
				list.remove();
				list.notify();
				
			}
			
			
			
		}
		}
	}
}


我在这只写了一个最简单的模型,生产者在队列为空时生产,不为空时则等待;消费者在队列为空时等待,在队列不为空时的消费。
生产者与消费者模型,我觉得用双缓冲对列实现更为灵活。这里实现双缓冲与线程同步有关,线程同步我会在以后再说的。线程同步的关键字啊:synchronized 。
分享到:
评论

相关推荐

    C++实现生产与消费者模型

    在计算机科学中,生产者-消费者模型是一种经典的并发编程问题,用于解决多个线程之间如何高效、安全地共享资源的问题。在这个模型中,"生产者"线程负责生成数据,而"消费者"线程则负责处理这些数据。C++作为一门支持...

    Qt入门练习项目——生产者消费者模型.zip

    在本项目中,我们将使用Qt5的QThread类和信号与槽机制来实现生产者消费者模型。QThread类允许我们创建和管理独立的执行线程,而信号与槽是Qt的核心特性,用于在对象间传递消息和事件,这在多线程环境中尤其有用。 1...

    LinuxC语言实现生产者和消费者模型

    LinuxC语言实现生产者和消费者模型LinuxC语言实现生产者和消费者模型LinuxC语言实现生产者和消费者模型LinuxC语言实现生产者和消费者模型LinuxC语言实现生产者和消费者模型LinuxC语言实现生产者和消费者模型LinuxC...

    python实现生产者消费者并发模型

    多线程实现生产者消费者模型:锁(Lock)、信号量(Semaphore、BoundedSemaphore)、条件(Condition)、队列(Queue)、事件(Event) 多进程程实现生产者消费者模型:信号量(Semaphore)、条件(Condition)、...

    java生产者消费者模型

    Java生产者消费者模型是多线程编程中一种经典的并发控制模型,它源于操作系统中的哲学思想,用于解决资源的共享和异步处理问题。在该模型中,"生产者"线程负责生成数据,而"消费者"线程则负责消费这些数据。两者之间...

    生产者消费者模型的演变

    生产者消费者模型是一种多线程同步的经典设计模式,它源于操作系统中的进程通信概念,用于解决资源的高效利用和协同工作问题。在这个模型中,生产者线程负责生成数据,而消费者线程则负责消费这些数据。为了确保生产...

    生产者消费者多进程模型Qt

    在IT领域,生产者消费者模型是一种经典的并发编程模式,它源于操作系统理论,用于解决资源的高效利用和同步问题。在本案例中,该模型被应用于一个使用Qt框架开发的多进程环境中,使得生产者进程与消费者进程能有效地...

    Java线程间的通信----生产者消费者模型

    生产者消费者模型是一种经典的线程同步问题,它模拟了实际生活中的生产过程和消费过程,使得生产者线程可以将数据生产出来,而消费者线程则负责消耗这些数据,两者之间通过共享数据结构进行协同工作。 生产者消费者...

    Java 线程间通信,生产者与消费者模型

    使用wait()和notify()实现的生产者与消费者模型,可以了解如何使用wait()和notify()进行线程间通信。(上一次上传的代码有一个问题没有考虑到,这次修补了——CSDN没法撤销资源,只能再上传了)

    使用Qt信号量实现单生产者多消费者模型

    在多线程编程中,设计模式是解决特定问题的有效手段,其中之一便是生产者-消费者模型。这个模型描述了两个或多个线程之间的协作,其中一方(生产者)生成数据,另一方(消费者)消费这些数据。在Qt框架下,我们可以...

    labview 生产者消费者例子

    总之,LabVIEW 生产者-消费者模型是解决多线程同步问题的有效工具,它通过队列、事件结构、条件变量和信号量等手段,协调了数据生成与处理的过程,提高了系统的并发性和效率。通过学习和实践提供的例程,可以进一步...

    生产者消费者模型源码

    生产者,消费者,线程同步,模型,锁

    消费者生产者模型 c++

    ### 消费者生产者模型 C++ #### 一、代码概览 此代码段实现了一个典型的消费者生产者模型,利用 C++ 和 Windows API 进行线程管理和同步控制。主要功能包括: - 定义了一个最大缓冲区数量 (`MAX_BUFFER_NUM`) 为 ...

    基于条件变量实现的生产者消费者模型

    基于Linux C++的条件变量实现的生产者消费者模型,旨在进一步帮助读者理解条件变量的使用。

    linux进程链、进程扇和信号量实现生产者--消费者模型实验报告

    通过对生产者-消费者模型的实现,学生将学习如何在Linux环境下运用无名信号量来保护临界资源,同时提升对文件I/O操作的掌握。 二、实验内容 实验分为三个部分: 1. 使用链式结构创建10个子进程,形成进程链。 2. ...

    多个消费者生产者模型

    首先,我们要理解"生产者-消费者模型"的基本原理。在计算机科学中,这通常通过使用队列(Queue)数据结构实现。队列是一种先进先出(FIFO)的数据结构,生产者在队列的一端放入产品,消费者则在另一端取出产品。当...

    自己用Java写的简单生产者与消费者模型

    在Java编程中,生产者-消费者模型是一种经典的多线程问题解决方案,用于处理并发操作中的数据共享和资源管理。这个模型通常由四个主要组件构成:生产者、消费者、存储(或缓冲区)以及可能的市场规则。根据提供的...

    生产者消费者为模型的多线程编程c#原创

    在C#编程中,"生产者消费者模型"是一种常见的多线程设计模式,它通过分离数据的生产和消费过程,使得生产者线程可以专心于创建数据,而消费者线程则专注于处理这些数据,两者互不干扰,提高了系统效率。在这个模型中...

    生产者与消费者实验报告

    在本次实验报告中,我们将详细介绍生产者与消费者模型的基本概念、实现原理以及具体的实验步骤与结果分析。 #### 二、生产者与消费者模型概述 ##### 2.1 基本定义 生产者与消费者模型主要包括两部分:生产者...

    生产者-消费者模型模拟进程调度

    内容:编程实现生产者-消费者问题的模拟。 基本要求: 1. 生产者消费者对缓冲区进行互斥操作。 2. 缓冲区大小为10,缓冲区满则不允许生产者生产数据,缓冲区空则不允许消费者消费数据。 3. 生产者消费者各循环操作10...

Global site tag (gtag.js) - Google Analytics