但是,在诸如资源控制之类的应用程序中,保持跨线程访问的公平性,容忍较差的聚合吞吐量更为重要,没有任何框架能够代表用户在这些相互冲突的目标之间做出决定;相反,必须适应不同的公平政策。...获取锁的过程:
acquire ()申请锁资源时,如果成功,它将进入临界区
当获取锁失败时,它进入一个 FIFO 等待队列并被阻塞,等待唤醒
当队列中的等待线程被唤醒时,会再次尝试获取锁资源。...如果成功,它进入临界区,否则它将继续阻塞,等待唤醒
释放锁过程:
当线程调用release()来释放锁资源时,如果没有其他线程在等待锁资源,那么释放就完成了。...,如果成功则执行整个acquire()方法,既当前线程获得锁资源并进入临界值....请注意,整个代码处于一个死循环中,直到设置成功.如果他们失败了,他们会一次又一次地尝试。
完成上述操作后,我们申请获取锁的线程成功加入了等待队列。