下面是一个简单的示例代码,展示了如何使用并发队列数据结构,其中ArrayList作为元素:
import java.util.ArrayList;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
public class ConcurrentQueueExample {
public static void main(String[] args) {
// 创建一个并发队列
BlockingQueue> queue = new LinkedBlockingQueue<>();
// 创建一个线程用于生产ArrayList,并将其加入队列
Thread producerThread = new Thread(() -> {
try {
for (int i = 0; i < 10; i++) {
ArrayList list = new ArrayList<>();
list.add(i);
queue.put(list);
System.out.println("Produced: " + list);
Thread.sleep(1000);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
});
// 创建一个线程用于消费队列中的ArrayList
Thread consumerThread = new Thread(() -> {
try {
while (true) {
ArrayList list = queue.take();
System.out.println("Consumed: " + list);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
});
// 启动生产者和消费者线程
producerThread.start();
consumerThread.start();
}
}
在这个示例中,我们使用BlockingQueue
接口的实现类LinkedBlockingQueue
作为并发队列。生产者线程通过循环创建一个包含一个整数的ArrayList
,然后将其放入队列中,最后休眠1秒。消费者线程通过循环从队列中取出ArrayList
并打印其内容。
这种方法可以保证生产和消费的线程安全性,并且可以实现并发访问和操作队列中的元素。
下一篇:并发堆实现中的问题