这是我的主要内容:
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答案 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>());