JCIPは、保護されたオブジェクトを次のように定義します。
守られた。保護されたオブジェクトには、特定のロックが保持されている場合にのみアクセスできます。保護されたオブジェクトには、他のスレッドセーフオブジェクト内にカプセル化されたオブジェクトや、特定のロックによって保護されていることがわかっている公開オブジェクトが含まれます。
コアJava内のそのようなオブジェクトの例として引用できるのはどれですか?
JCIPは、保護されたオブジェクトを次のように定義します。
守られた。保護されたオブジェクトには、特定のロックが保持されている場合にのみアクセスできます。保護されたオブジェクトには、他のスレッドセーフオブジェクト内にカプセル化されたオブジェクトや、特定のロックによって保護されていることがわかっている公開オブジェクトが含まれます。
コアJava内のそのようなオブジェクトの例として引用できるのはどれですか?
すぐに頭に浮かぶのは、SynchronizedList
によって返されるインスタンスが保持するリストCollections.synchronizedList()
です。ソースコードの一部を次に示します。
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
}
オブジェクトはスレッド セーフではlist
ありませんが、ミューテックスによって保護されています。によって返されるオブジェクトはlistIterator()
、同じミューテックス (同期リスト自体) によって手動で保護する必要があります。