生产者 - 消费者问题 - 1项 [英] Producer-Consumer problem - 1 item

查看:67
本文介绍了生产者 - 消费者问题 - 1项的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述





任何人都可以分享java生产者消费者计划的代码片段。该计划的目标是在给定的时间点应该只有1个项目。我知道我应该使用wait并通知但是无法获得完整的代码片段。这可以不使用任何类型的数据结构吗?



提前谢谢。

解决方案

< pre lang =java> package 线程;

class 消费者 extends 线程{
private Good gObj;

消费者(好g){
gObj = g;
}

public void run(){
synchronized (gObj){
尝试 {
if (gObj.get()。equals( ))
{
System.out.println( 消费者等待好消息);
gObj.wait();
}
System.out.println( 得到了好的 - > + gObj.get());
} catch (InterruptedException e){

e.printStackTrace();
}
}
}
}

class 好{
< span class =code-keyword> private
String item = ;

public void set( String str){
item = str;
}

public String get(){
return 项目;
}
}

public class 制作人< span class =code-keyword> implements
Runnable {
private Good gObj;

制片人(好g){
gObj = g;
}

public void run(){
synchronized (gObj)
{
if (gObj.get()。 equals( ))
{
System.out.println(< span class =code-string> 要生成项目);
gObj.set( hi);
gObj.notify();
}
}
}

public static void main( String [] args){
Good g = new Good();
制片人p = 制作人(g);
线程producerThread = new 线程(p);
消费者c = 消费者(g);
c.start();
producerThread.start();
}
}


Hi,

Could anyone kindly share the code snippet of java producer consumer program. The objective of the program is that at a given point of time there should be only 1 item. I know I should be using wait and notify but not able to get the complete snippet. Can this be done without using any kind of data structure?

Thanks in advance.

解决方案

package Thread;

class Consumer extends Thread {
    private Good gObj;

    Consumer(Good g) {
        gObj = g;
    }

    public void run() {
        synchronized (gObj) {
            try {
                if(gObj.get().equals(""))
                {
                    System.out.println("Consumer waiting for good to be available");
                    gObj.wait();                                        
                }
                System.out.println("Got a good-->" + gObj.get());
            } catch (InterruptedException e) {

                e.printStackTrace();
            }
        }
    }
}

class Good {
    private String item = "";

    public void set(String str) {
        item = str;
    }

    public String get() {
        return item;
    }
}

public class Producer implements Runnable {
    private Good gObj;

    Producer(Good g) {
        gObj = g;
    }

    public void run() {
        synchronized (gObj)
        {
            if(gObj.get().equals(""))
            {
                System.out.println("Going to produce an item");
                gObj.set("hi");             
                gObj.notify();  
            }           
        }
    }

    public static void main(String[] args) {
        Good g = new Good();
        Producer p = new Producer(g);
        Thread producerThread = new Thread(p);  
        Consumer c = new Consumer(g);
        c.start();
        producerThread.start();
    }
}


这篇关于生产者 - 消费者问题 - 1项的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆