JCIP将 Guarded 对象定义为:
守着。只有持有特定的锁才能访问受保护的对象。受保护对象包括那些封装在其他线程安全对象中的对象和已知由特定锁保护的已发布对象。
哪个可以作为核心 Java 中此类对象的示例?
JCIP将 Guarded 对象定义为:
守着。只有持有特定的锁才能访问受保护的对象。受保护对象包括那些封装在其他线程安全对象中的对象和已知由特定锁保护的已发布对象。
哪个可以作为核心 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()
应该由同一个互斥锁(即同步列表本身)手动保护