以下代码片段取自 libcore 项目中的 android JellyBean ReferenceQueue.java。
有人能告诉我为什么使用同步块,在 ReferenceQueue.class 上同步,而不是在方法中添加同步限定符吗?在这种情况下,这两种方法在功能上是否等效?
从我看到的类似问题来看,使方法同步似乎更有效。
干杯,马特
public class ReferenceQueue<T> {
... <snip> ...
public static Reference unenqueued = null;
static void add(Reference<?> list) {
synchronized (ReferenceQueue.class) {
if (unenqueued == null) {
unenqueued = list;
} else {
Reference<?> next = unenqueued.pendingNext;
unenqueued.pendingNext = list.pendingNext;
list.pendingNext = next;
}
ReferenceQueue.class.notifyAll();
}
}