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.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage