如果我使用CopyOnWriteArrayList在线程之间共享一个项目列表,我是否需要同步这些项目(如果它们被不同的线程更新和读取?)
目前我的项目类定义如下。我是否需要为每个getter和setter添加synchronized?
基本上我想确保一个线程的更改在另一个线程中可见 - 我认为CopyOnWriteArrayList将提供内存屏障以确保这一点,但我想确定 - 谢谢
public class MyClass {
private String string;
private Long longObj;
private long longprim;
public String getString() {
return string;
}
public void setString(String string) {
this.string = string;
}
public Long getLongObj() {
return longObj;
}
public void setLongObj(Long longObj) {
this.longObj = longObj;
}
public long getLongprim() {
return longprim;
}
public void setLongprim(long longprim) {
this.longprim = longprim;
}
}
答案 0 :(得分:0)
由于您的CopyOnWriteArrayList
包含可变项,因此您需要完全同步项类。想象一下,两个线程访问列表中的相同项目(安全列表操作),然后操纵此项目(不安全)。