protected final boolean tryAcquire(int acquires){
  final Thread current=Thread.currentThread();
  int c=getState();
  if (c == 0) {
    if (!hasQueuedPredecessors() && compareAndSetState(0,acquires)) {
      setExclusiveOwnerThread(current);
      return true;
    }
  }
 else   if (current == getExclusiveOwnerThread()) {
    int nextc=c + acquires;
    if (nextc < 0)     throw new Error("Maximum lock count exceeded");
    setState(nextc);
    return true;
  }
  return false;
}

protected final boolean tryAcquire ( int acquires ) { final Thread current = Thread . currentThread ( ) ; int c = getState ( ) ; if ( c == 0 ) { if ( ! hasQueuedPredecessors ( ) && compareAndSetState ( 0 , acquires ) ) { setExclusiveOwnerThread ( current ) ; return true ; } } else if ( current == getExclusiveOwnerThread ( ) ) { int nextc = c + acquires ; if ( nextc < 0 ) throw new Error ( "Maximum lock count exceeded" ) ; setState ( nextc ) ; return true ; } return false ; }
fair version of tryacquire . don ' t grant access unless recursive call or no waiters or is first .
