`
scjp
  • 浏览: 3553 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
最近访客 更多访客>>
社区版块
存档分类
最新评论

生产者与消费者Java实现

阅读更多
Container类
package multithread.producerandconsumer;

public class Container {
	static int size=5;
	int index=0;
	String [] container=new String[size];
	
	
	synchronized public void add(String production){
		if(index>=size){
			try {
				wait();
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			
		}
		container[index]=production;
		System.out.println("P-"+Thread.currentThread().getName()+" produce "+container[index]+" production");
		index++;
		notify();
	}
	
	synchronized public void remove(){
		if(index==0){
			try {
				wait();
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
		index--;
		System.out.println("C-"+Thread.currentThread().getName()+" consume "+container[index]+" production");
		container[index]=null;
		notify();
		
	}
}

Producer类
package multithread.producerandconsumer;

public class Producer implements Runnable {
	Container container=null;
	Producer(Container container){
		this.container=container;
	}
	@Override
	public void run() {
		long proId=0;
		while(true){
			
			proId++;
			container.add(proId+"NO.");
			if(proId==10)
				break;
		}
	}
}

Consumer类
package multithread.producerandconsumer;

public class Consumer implements Runnable {
	Container container=null;
	Consumer(Container container){
		this.container=container;
	}
	@Override
	public void run() {
		for(int i=0;i<10;i++){
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			container.remove();
		}
	}

}

测试类
package multithread.producerandconsumer;

public class TestProduceAndConsume {

	public static void main(String[] args) {
		Container container=new Container();
		Producer prod=new Producer(container);
		Consumer consumer=new Consumer(container);
		new Thread(prod).start();
		new Thread(consumer).start();
//		new Thread(consumer).start();
//		new Thread(consumer).start();
	}
}
0
0
分享到:
评论

相关推荐

    生产者与消费者 java实现

    本主题将深入探讨生产者与消费者模型的Java实现。 生产者与消费者问题的核心是有一个共享资源(例如,一个缓冲区),生产者不断地生产产品并放入缓冲区,而消费者则从缓冲区取出产品进行消费。关键在于确保生产者...

    操作系统:多线程处理生产者消费者,java实现

    基本满足操作系统课上要求,java实现的生产者消费者模型。

    生产者与消费者java实现源代码

    以下是对生产者-消费者问题及其Java实现的详细解析: 1. **生产者-消费者模型**: - **生产者**:负责生产数据并将其放入一个共享的数据缓冲区。 - **消费者**:从共享缓冲区中取出数据并进行处理。 - **缓冲区*...

    操作系统生产者与消费者问题Java简单模拟实现

    总的来说,"操作系统生产者与消费者问题Java简单模拟实现"这个项目提供了一个直观的多线程编程实例,帮助我们理解和实践Java中的线程同步技术,这对于理解和解决实际并发问题具有重要意义。通过分析这个项目,我们...

    JAVA实现线程间同步与互斥生产者消费者问题

    本项目通过一个生产者消费者问题的实例,展示了如何在Java中实现线程间的同步与互斥。 生产者消费者问题是经典的并发问题之一,它涉及到两个类型的线程:生产者和消费者。生产者负责生成数据(产品),而消费者则...

    Java多线程实现生产者消费者

    这就是一个基本的Java“生产者-消费者”模型实现。通过这样的设计,我们可以有效地控制生产者和消费者的执行顺序,确保了数据的正确性,并且避免了先消费后生产的情况。在实际应用中,可能需要根据具体需求进行优化...

    java多线程实现生产者和消费者

    生产者和消费者线程都需要有自己的业务逻辑,这可以通过重写`run()`方法实现。 2. **共享资源**:在生产者-消费者模型中,通常会有一个固定大小的缓冲区作为共享资源。可以使用数组或链表实现,但需要注意的是,当...

    多线程简易实现生产者消费者模式

    总之,生产者消费者模式是多线程编程中的一种重要设计模式,它通过信号量和条件变量实现了线程间的同步和通信,有效提高了系统资源的利用率和整体效率。在Java中,我们可以借助并发库轻松实现这一模式,使得代码更加...

    生产者消费者问题 Java实现

    在生产者消费者问题的Java实现中,通常会使用一个有界缓冲区来存储数据。这个缓冲区可以用数组或`BlockingQueue`来实现。`BlockingQueue`是一个线程安全的数据结构,它内置了同步机制,可以避免死锁和资源浪费。 ...

    生产者消费者java实现

    详细的生产者消费者的java实现过程,详细的生产者消费者的java实现过程,详细的生产者消费者的java实现过程

    Java生产者与消费者

    下面我们将详细讲解如何在Java中实现生产者与消费者: 1. **定义缓冲区** 缓冲区是生产者与消费者之间共享的数据结构,通常是一个固定大小的数组。例如: ```java class Buffer { private int[] items = new ...

    java生产者与消费者实验报告

    本实验旨在通过实际编程操作,深入理解Java中生产者与消费者模型的工作机制及其同步控制策略,具体目标为实现多生产者与多消费者之间的数据共享和线程同步。 #### 实验原理 生产者-消费者模型主要涉及到以下概念:...

    java 编写的生产者与消费者问题

    这个库提供了多种工具类,如Semaphore(信号量)、BlockingQueue(阻塞队列)和Condition(条件变量),这些都可以用来实现生产者-消费者模型。 1. **BlockingQueue**: 阻塞队列是一种特殊的队列,它具有线程安全的...

    java线程实现的生产者和消费者的程序

    在Java中,我们可以利用`java.util.concurrent`包中的工具类来实现生产者消费者模式。其中,`BlockingQueue`接口是一个理想的候选,因为它提供了线程安全的数据结构,可以用于线程间的同步。`BlockingQueue`有多种...

    操作系统生产者与消费者java源代码

    "操作系统生产者与消费者Java源代码详解" 操作系统生产者与消费者是一个经典的计算机科学问题,旨在解决多个进程之间的同步问题。在Java语言中,可以使用多种方法实现生产者与消费者模型。本文将通过Java图形用户...

    java生产者与消费者问题

    在解压缩后的"proandcom"文件中,可能包含了进一步的代码示例或详细的解释,你可以查看这些文件以加深对生产者消费者问题的理解。同时,为了优化性能和避免死锁,编写多线程程序时,需要遵循良好的设计原则,例如...

    生产者消费者问题java

    下面是一个简单的生产者消费者问题的Java实现: ```java import java.util.concurrent.ArrayBlockingQueue; public class ProducerConsumerProblem { public static void main(String[] args) { ...

    java实现多线程经典模型生产者消费

    java实现多线程经典模型生产者消费java实现多线程经典模型生产者消费java实现多线程经典模型生产者消费java实现多线程经典模型生产者消费java实现多线程经典模型生产者消费java实现多线程经典模型生产者消费java实现...

    Java 生产者消费者模式

    在Java编程中,生产者消费者模式是一种典型的多线程协作模型,用于解决系统资源供需不平衡的问题。这个模式的核心思想是将生产数据和消费数据的过程解耦,使得生产者可以独立地生产数据,而消费者可以独立地消费数据...

    java 实现操作系统的消费者生产者问题

    知识点:Java实现操作系统中的消费者生产者问题 一、消费者生产者问题概述 消费者生产者问题,也称为有界缓冲区问题,是并发编程中的经典问题,主要用来展示进程或线程之间的同步问题。该问题涉及两个类型的角色:...

Global site tag (gtag.js) - Google Analytics