public T allocate(){
  int top=_top.get();
  if (top > 0 && _top.compareAndSet(top,top - 1))   return _freeStack.getAndSet(top - 1,null);
 else   return null;
}

public T allocate ( ) { int top = _top . get ( ) ; if ( top > 0 && _top . compareAndSet ( top , top - 1 ) ) return _freeStack . getAndSet ( top - 1 , null ) ; else return null ; }
try to get an object from the free list . returns null if the free list is empty .
