我试图跨多个线程使用arrayList,其中2个线程向其添加元素,一个线程只检索第一个元素.我知道我可以使用syncronizedList,但我想看看这个实现是否正确.基本上我在同步方法中添加了所有的数组 *** 作
public voID synchronized addElem(String str){ String s = str.trim(); myArray.add(s); }
这个可以吗?
解决方法:
同步写入是不够的,您还需要同步读取.否则,与write同时发生的读取可能会返回不一致的数据,或触发异常:
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 – 访问数组的多个线程全部内容,希望文章能够帮你解决java – 访问数组的多个线程所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)