次のJavaソースコードを参照してください。
static class SynchronizedList<E>
extends SynchronizedCollection<E>
implements List<E> {
final List<E> list;
public boolean equals(Object o) {
synchronized (mutex) {return list.equals(o);}
}
public int hashCode() {
synchronized (mutex) {return list.hashCode();}
}
public ListIterator<E> listIterator() {
return list.listIterator(); //Must be manually synched by user
}
私の質問は、なぜlistIterator()がhashcode()やequals()メソッドのようにミューテックスによって保護されていないのですか?なぜ彼らはそれがユーザーによる外部同期を必要とするようにそれを設計したのですか?