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

Vũ *_*Anh 1 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
    }
}
Run Code Online (Sandbox Code Playgroud)

Producer创建随机工作日并最后添加到ArrayList - >并打印Consumer获取此ArrayList中的第一个元素 - >删除它 - >并打印

如果我无法在MAIN FUNCTION中编辑任何内容,只需在Producer和Consumer中进行更改即可.如何通过Thread访问相同的变量(ArrayList data_queue)到ADD和DELETE

JB *_*zet 5

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

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

  • 首先,我不是你的兄弟.其次,不需要大声喊叫.第三,我在哪里告诉你修改main方法中的任何内容?为什么你不能在消费者的run方法和生产者的run方法的列表上同步?你有没有尝试过什么? (2认同)