gpt4 book ai didi

java - 为什么 SynchronizedCollection 将其分配给互斥锁?

转载 作者:行者123 更新时间:2023-11-30 09:16:42 25 4
gpt4 key购买 nike

为什么 Sun 不使用 synchronized(this) 而不是 mutex = this 然后使用 synchronized(mutex) ?
我看不出他们所做的有什么好处吗?我错过了什么吗?

static class SynchronizedCollection<E> implements Collection<E>, Serializable {
private static final long serialVersionUID = 3053995032091335093L;

final Collection<E> c; // Backing Collection
final Object mutex; // Object on which to synchronize

SynchronizedCollection(Collection<E> c) {
if (c==null)
throw new NullPointerException();
this.c = c;
mutex = this;
}
SynchronizedCollection(Collection<E> c, Object mutex) {
this.c = c;
this.mutex = mutex;
}

public int size() {
synchronized (mutex) {return c.size();}
}
public boolean isEmpty() {
synchronized (mutex) {return c.isEmpty();}
}

最佳答案

这允许 Collection 的客户端通过第二个构造函数在单个互斥体上同步多个集合。

关于java - 为什么 SynchronizedCollection 将其分配给互斥锁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19331908/

25 4 0