gpt4 book ai didi

java - 在java中读取可扩展的数组列表

转载 作者:行者123 更新时间:2023-12-01 21:50:45 26 4
gpt4 key购买 nike

是否可以将元素添加到数组列表,而其他线程同时读取数组列表,并收到有关此更改的通知?

例如,我在主线程中有一个数组列表。有 4 个元素:

    ArrayList<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);

同时,其他线程在同一个列表中添加元素:

     Thread thread = new Thread(new Runnable() {
@Override
public void run() {
for (int i = 5; i < 10; i++) {
list.add(i);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
thread.start();

现在我开始阅读它们:

    for (int i : list) {
System.out.println(i);
Thread.sleep(2000);
}

我想读取从 1 到 9 的所有元素,但这行不通。我怎样才能做到这一点?也许我应该在这段代码中放置同步块(synchronized block),但是我应该在哪里?

最佳答案

这不能使用 ArrayList 来完成,但听起来您需要的是一些队列。
为此,您可以使用Queue 的实现之一。例如,采用ConcurrentLinkedQueue,它可以在您的多线程扫描中很好地工作。

关于java - 在java中读取可扩展的数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58764033/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com