下面列出了java.util.WeakHashMap#isEmpty ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
private void enqueueWeakFinalizers() {
// Clear any strong references.
WeakHashMap<?, ?> strongRefs = this.reachabilityMap;
if (!strongRefs.isEmpty()) {
strongRefs.clear();
}
// Enqueue finalizer jobs.
ReferenceQueue<ScriptObject> weakQueue = this.weakQueue;
ArrayDeque<Job> finalizerJobs = this.finalizerJobs;
for (Reference<? extends ScriptObject> ref; (ref = weakQueue.poll()) != null;) {
Ref<Runnable> finalizer = ((WeakReferenceWithFinalizer) ref).getFinalizer();
if (finalizer.get() != null) {
finalizerJobs.add(new FinalizerJob(finalizer));
}
}
}
/**
* <p>
* Unregisters the given object.
* </p>
*
* <p>
* Used by the reflection methods to avoid infinite loops.
* </p>
*
* @param value
* The object to unregister.
*/
static void unregister(Object value) {
if (value != null) {
WeakHashMap<Object, Object> m;
synchronized (ToStringStyle.class) {
m = REGISTRY.get();
if (m != null) {
m.remove(value);
if (m.isEmpty()) {
REGISTRY.remove();
}
}
}
}
}
/**
* <p>
* Unregisters the given object.
* </p>
*
* <p>
* Used by the reflection methods to avoid infinite loops.
* </p>
*
* @param value
* The object to unregister.
*/
static void unregister(Object value) {
if (value != null) {
WeakHashMap<Object, Object> m;
synchronized (ToStringStyle.class) {
m = REGISTRY.get();
if (m != null) {
m.remove(value);
if (m.isEmpty()) {
REGISTRY.remove();
}
}
}
}
}
static void unregister(Object v) {
if (v == null) return; WeakHashMap<Object, Object> m = REGISTRY.get();
if (m == null) return; m.remove(v); if (m.isEmpty()) REGISTRY.remove();
}