从2个或更多类访问相同的变量

时间:2013-07-17 08:08:42

标签: java

这是我的主要内容:

public static void main(String[] args){
    java.util.ArrayList data_queue=new java.util.ArrayList();
    Producer p = new Producer(data_queue);
    Consumer c = new Consumer(data_queue);
    p.start();
    c.start();
    System.out.println(“Random Week Day:”);
}

class Producer extends Thread{
    ArrayList data_queue;
    public Producer(ArrayList data_queue){
        this.data_queue=data_queue;
    }
    public void run(){
        //your code; Create random week day, Add
    }
}

class Consumer extends Thread{
    ArrayList data_queue;
    public Consumer(ArrayList data_queue){
        this.data_queue=data_queue;
    }
    public void run(){
        //your code: Remove, display
    }
}

生产者创建随机工作日并最后添加到ArrayList - >并打印 消费者获得此ArrayList中的第一个元素 - >删除它 - >并打印

如果我无法在MAIN FUNCTION中编辑任何内容,只需在Producer和Consumer中进行更改即可。如何通过Thread

访问相同的变量(ArrayList data_queue)到ADD和DELETE

2 个答案:

答案 0 :(得分:5)

我的猜测是,您的老师希望您使用data_queue.wait()data_queue.notifyAll()。消费者应该在队列为空时等待,并且生产者应该在每次将一个元素放入队列时通知。

仔细阅读这些方法的javadoc(在java.lang.Object中),因为它们是难以使用的低级同步机制。 Java tutorial也是一个很好的参考。

答案 1 :(得分:0)

您已经访问了同一个对象。您只调用了new一次,因此只有一个ArrayList已经传递给所有人。不要忘记关注线程之间的同步,如:

List<String> list = Collections.synchronizedList(new ArrayList<String>());