gpt4 book ai didi

java - 多线程访问数组

转载 作者:太空宇宙 更新时间:2023-11-03 11:49:59 25 4
gpt4 key购买 nike

我正在尝试跨多个线程使用 arrayList,其中 2 个线程向其添加元素,一个线程仅检索第一个元素。我知道我可以使用 syncronizedList 但我想看看这个实现是否正确。基本上我在一个同步方法中添加了我所有的数组操作

public void synchronized addElem(String str){
String s = str.trim();
myArray.add(s);
}

这样可以吗?

最佳答案

写同步还不够,还需要读同步。否则,与写入同时发生的读取可能会返回不一致的数据,或触发异常:

public synchronized String getFirst() {
if (myArray.size() != 0)
return myArray.get(0);
return null;
}

您还可以使用 Collections.synchronizedList

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

关于java - 多线程访问数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21963453/

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