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();
}
}
分享到:
相关推荐
生产者与消费者的问题一直都是初级编程这需要了解的内容。
基本满足操作系统课上要求,java实现的生产者消费者模型。
多个生产者与多个消费者共用资源,用java代码实现,操作系统的实验,还有报告,下次再发
利用Java多线程实现的操作系统的生产者与消费者算法,主要用到了线程的同步,等待与唤醒操作。
本代码是用JAVA实现的生产者与消费者的问题,线程间的同步与互斥功能
生产者消费者问题 Java实现 线程同步 线程通信生产者消费者问题 Java实现 线程同步 线程通信生产者消费者问题 Java实现 线程同步 线程通信
java多线程实现生产者和消费者
编写一个“生产者-消费者”的多线程演示程序,两个生产者,一个消费者,可以存放产品的仓库容量为10,仓库用栈实现,并有同步功能,且能防止先消费后生产的情况。
详细的生产者消费者的java实现过程,详细的生产者消费者的java实现过程,详细的生产者消费者的java实现过程
设计目的:通过研究Linux 的进程机制和信号量实现生产者消费者问题的并发控制。说明:有界缓冲区内设有20 个存储单元,放入/取出的数据项设定为1‐20 这20 个整型数。设计要求:1)每个生产者和消费者对有界缓冲区...
java实现生产者消费者,生产者先生产,然后通知消费者消费,然后再通知生产者生产
java线程实现的生产者和消费者的程序java线程实现的生产者和消费者的程序
用java多线程简易实现生产者消费者模式的代码,用java多线程简易实现生产者消费者模式的代码。
java实现多线程经典模型生产者消费java实现多线程经典模型生产者消费java实现多线程经典模型生产者消费java实现多线程经典模型生产者消费java实现多线程经典模型生产者消费java实现多线程经典模型生产者消费java实现...
生产者与消费者问题,用java实现线程
//下面的消费者类对象和生产者类对象所操作的是同一个同步堆栈对象 Producer p1 = new Producer(stack,ce); new Thread(p1).start();//生产者线程启动 Consumer c1 = new Consumer(stack,ce); new Thread(c1)....
在多道程序环境下,进程同步问题十分重要,通过解决“生产者-消费者”问题,可以帮助我们更好的理解进程同步的概念及实现方法。掌握线程创建和终止的方法,加深对线程和进程概念的理解,会用同步与互斥方法实现线程...
设计目的:通过研究Linux 的进程机制和信号量实现生产者消费者问题的并发控制. 说明:有界缓冲区内设有20个存储单元,放入/取出的数据项设定为1-20这20个整型数. 设计要求:(1)每个生产者和消费者对有界缓冲区进行操作后...
用java模拟生产者和消费者在缓冲区间的阻塞情况。
用java多线程,实现生产者消费者同步和互斥的问题,操作系统中的经典问题