无竞争时,加锁解锁只是利用CAS去更新state的值
已获取锁的线程,可以多次lock,但是需要对应次数的unlock才能完全释放
公平和非公平实现
不同点 :
非公平方式调用lock时任意线程均可抢占锁,公平方式会先校验队列中当前线程是否可以抢占锁
相同点:
唤醒节点线程的代码相同,处理流程相同,所以都是唤醒最前面一个非取消状态的节点线程
无竞争时,加锁解锁只是利用CAS去更新state的值
已获取锁的线程,可以多次lock,但是需要对应次数的unlock才能完全释放
公平和非公平实现
不同点 :
非公平方式调用lock时任意线程均可抢占锁,公平方式会先校验队列中当前线程是否可以抢占锁
相同点:
唤醒节点线程的代码相同,处理流程相同,所以都是唤醒最前面一个非取消状态的节点线程