newReentrantLock(true);lockprocess:protectedfinalbooleantryAcquire(intacquires){//获取当前线程finalThreadcurrent=Thread.currentThread();//获取状态值intc=getState();//还没有线程被占用if(c==0){//!(头节点和尾节点不是一个节点&&(头节点的next->NULLorheadnode.next节点不是当前线程))//也就是说head和tail是一个节点或者头节点。下一个节点的线程为当前线程返回真;}}//当前线程等于独占线程elseif(current==getExclusiveOwnerThread()){//statevalue+1intnextc=c+acquires;if(nextc<0)thrownewError("超过最大锁计数");//重新分配状态值setState(nextc);返回真;}//否则returnfalsereturnfalse;}如果获取锁失败,用JDK8加锁newReentrantLock()过程(1)中的过程是一样的!
