次のコード スニペットは、libcore プロジェクトの Android JellyBean ReferenceQueue.java から取得したものです。
メソッドに同期修飾子を追加する代わりに、ReferenceQueue.classで同期する同期ブロックが使用される理由を誰か教えてもらえますか? この場合、これら 2 つのアプローチは機能的に同等ですか?
私が見た同様の質問から、メソッドを同期させる方が効率的であるようです。
乾杯、マット
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();
}
}