我需要同步这个,当许多线程访问get方法并且只有一个线程正在访问setList方法时?
public class ListContainer {
private List<String> myList = new ArrayList<String();
public List<String> get ( )
{
return new ArrayList<String>(myList);
}
public List<String> set ( )
{
this.myList = computeList();
}
}
Run Code Online (Sandbox Code Playgroud)
我不在乎读者是否获得旧数据,但数据应该是一致的.
Janning
如果满足以下条件,则不必同步(但必须声明myList
为volatile
):
computeList
不依赖于当前的状态 myList
Collections.unmodifiableList(computeList())
表达此条件的更好方法)