>>114
うん、必要ない。
だが、それを言うのであれば
private final List<String> list = new ArrayList();
public synchronized void add(String str) {
list.add(str);
}
でもいいし、
private final List<String> list = new ArrayList();
private final Object obj;
public void add(String str) {
  synchronized(obj) {
    list.add(str);
  }
}
でもいいし、
private final List<String> list = new ArrayList();
private final Lock lock;
public void add(String str) {
  lock.lock();
  try {
    list.add(str);
  } finally {
    lock.unlock();
  }
}
でもいい。
実装方法が複数あることに問題ある?