WeakReference не возвращает null, хотя нет сильных ссылок на реальный объект ссылки

Я просматриваю следующий пост на Слабые ссылки в java :-

Понимание слабых ссылок.

После прохождения теоретической части, пытаюсь проверить слабую ссылку на null condition. Но, проверка нуля для слабой ссылки никогда не возвращает true в следующем коде :-

package com.weak;

import java.lang.ref.WeakReference;

class Widget{}

public class WeakReferenceDemo {

    public static void main(String[] args) throws InterruptedException {

        Widget widget = new Widget() ;
        WeakReference valueWrapper = new WeakReference(widget) ;

        System.out.println( valueWrapper.get() );

        //here strong reference to object is lost
        widget = null ;

        int count = 0 ;

        //here checking for null condition
        while( valueWrapper.get() != null ){
            System.out.print(".");
            Thread.sleep(432) ;

            if(++count % 25 == 0)   System.out.println();
        }

        System.out.println( valueWrapper.get() );
    }
}

Подскажите, пожалуйста, почему valueWrapper.get() не возвращает null, хотя ссылке widget присвоено нулевое значение.

Спасибо.

7
задан mogli 20 October 2011 в 17:26
поделиться