@SuppressWarnings({"unchecked"}) public FinalizableReferenceQueue(){
  ReferenceQueue<Object> queue;
  boolean threadStarted=false;
  try {
    queue=(ReferenceQueue<Object>)startFinalizer.invoke(null,FinalizableReference.class,this);
    threadStarted=true;
  }
 catch (  IllegalAccessException e) {
    throw new AssertionError(e);
  }
catch (  Throwable t) {
    logger.log(Level.INFO,"Failed to start reference finalizer thread." + " Reference cleanup will only occur when new references are" + " created.",t);
    queue=new ReferenceQueue<Object>();
  }
  this.queue=queue;
  this.threadStarted=threadStarted;
}

@ SuppressWarnings ( { "unchecked" } ) public FinalizableReferenceQueue ( ) { ReferenceQueue < Object > queue ; boolean threadStarted = false ; try { queue = ( ReferenceQueue < Object > ) startFinalizer . invoke ( null , FinalizableReference . class , this ) ; threadStarted = true ; } catch ( IllegalAccessException e ) { throw new AssertionError ( e ) ; } catch ( Throwable t ) { logger . log ( Level . INFO , "Failed to start reference finalizer thread." + " Reference cleanup will only occur when new references are" + " created." , t ) ; queue = new ReferenceQueue < Object > ( ) ; } this . queue = queue ; this . threadStarted = threadStarted ; }
constructs a new queue .
