Использование ReferenceQueue и WeakReference
Я хочу правильно закрыть объект Closeable, когда на него больше не ссылаются другие потоки.
Я написал небольшой тест, но после того, как объект был поставлен в очередь, метод get возвращает значение null, то есть метод poll возвращает соответствующий объект, у которого нет референта.
public static void main(String[] args)
{
ReferenceQueue<Closeable> reaped = new ReferenceQueue<Closeable>();
Closeable s = <SOME CLOSEABLE IMPL>;
WeakReference<Closeable> ws = new WeakReference<Closeable>(s, reaped);
s = null;
System.gc();
Closeable ro = (Closeable)reaped.poll().get();
ro.close();
}
Заранее спасибо. Любая помощь будет оценена.