Verwenden von ReferenceQueue und WeakReference
Ich möchte das Closeable-Objekt ordnungsgemäß schließen, wenn es nicht mehr von anderen Threads referenziert wird.
Ich habe einen kleinen Test geschrieben, aber nachdem das Objekt in die Warteschlange gestellt wurde, gibt die get-Methode null zurück, d. H. Die poll-Methode gibt das richtige Objekt zurück, das keinen Verweis hat.
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();
}
Danke im Voraus. Jede Hilfe wird geschätzt.