< prev index next >

test/jdk/java/lang/ref/ReferenceEnqueue.java

Print this page

        

*** 23,33 **** /* @test * @bug 4268317 8132306 8175797 * @summary Test if Reference.enqueue() works properly with GC * @run main ReferenceEnqueue - * @run main/othervm -Djdk.lang.ref.disableClearBeforeEnqueue=true ReferenceEnqueue */ import java.lang.ref.*; import java.util.ArrayList; import java.util.List; --- 23,32 ----
*** 85,96 **** static class ExplicitEnqueue { final ReferenceQueue<Object> queue = new ReferenceQueue<>(); final List<Reference<Object>> refs = new ArrayList<>(); final int iterations = 1000; - final boolean disableClearBeforeEnqueue = - Boolean.getBoolean("jdk.lang.ref.disableClearBeforeEnqueue"); ExplicitEnqueue() { this.refs.add(new SoftReference<>(new Object(), queue)); this.refs.add(new WeakReference<>(new Object(), queue)); // Can't test PhantomReference because get() always returns null. --- 84,93 ----
*** 99,112 **** void run() throws InterruptedException { for (Reference<Object> ref : refs) { if (ref.enqueue() == false) { throw new RuntimeException("Error: enqueue failed"); } ! if (disableClearBeforeEnqueue && ref.get() == null) { ! throw new RuntimeException("Error: clearing should be disabled"); ! } ! if (!disableClearBeforeEnqueue && ref.get() != null) { throw new RuntimeException("Error: referent must be cleared"); } } System.gc(); --- 96,106 ---- void run() throws InterruptedException { for (Reference<Object> ref : refs) { if (ref.enqueue() == false) { throw new RuntimeException("Error: enqueue failed"); } ! if (ref.get() != null) { throw new RuntimeException("Error: referent must be cleared"); } } System.gc();
< prev index next >