) , 如果设置成功 , 则独占该锁
设置失败 , 通过addWaiter创建本线程的Node , 插入队列中
在添加完节点后 , 如果当前线程未抢占成功 , 则会遍历删除Cancel节点
最后会找到可以执行的...)时 , 则独占该锁
如果当前独占线程是本线程的话 , 则将State递增
否则 , 则返回false , 将本线程插入队列中
final boolean nonfairTryAcquire..., 直到前驱接节点为空 , 则将当前节点设置为head节点 , 可以获取当前锁
final boolean acquireQueued(final Node node, int arg) {...ws为Node.SIGNAL的话 , 则返回true , park当前线程
如果前驱节点的ws为canceld的话 , 则从队列中去除掉canceld节点
如果前驱节点的ws为0或者PROPAGATE的话...}
在Sync中的tryRelease中 , 会释放相关资源 , 并且返回锁是否释放成功
protected final boolean tryRelease(int releases) {