好的,据我了解,最好创建一个final static
用于同步的对象。
但是,我还读到如果对象引用没有改变,那么它不会有并发问题。
以下代码是否违反同步性?
class Foo {
private static ArrayList<Client> clients = null;
public Foo() {
clients = new ArrayList<>();
//add stuff to list here..
}
public void addClient(Client C) {
synchronized(clients) {
clients.add(C);
}
}
}
ArrayList
如果客户端从未直接公开(仅通过 Getters 除外),我是否必须使客户端成为最终对象或创建最终对象?换句话说,我从不为 clients 数组提供 set 方法,因此引用永远不会改变。