发布于 2012-10-25 08:43:06
您可能正在尝试实例化一个java.util.concurrent.locks.Lock,它是一个接口。那当然行不通。您需要实例化一个实现,例如ReentrantLock,这是在Java中执行“灵活”锁的标准方法,在简单的监视器锁还不够的情况下。它的文件对公平性有一些看法:
这个类的构造函数接受一个可选的公平参数。当设置为true时,在争用项下,锁倾向于授予对等待时间最长的线程的访问权限。否则,此锁不保证任何特定的访问顺序。使用由许多线程访问的公平锁的程序可能比使用默认设置的程序显示更低的总体吞吐量(例如,速度较慢;通常要慢得多),但有时差异较小,以获得锁并保证缺乏饥饿。但是,请注意,锁的公平性并不能保证线程调度的公平性。因此,使用公平锁的多个线程中的一个可以连续多次获得该锁,而其他活动线程则没有进展,目前也没有保存该锁。还请注意,非定时tryLock方法不符合公平设置。如果锁可用,即使其他线程正在等待,它也会成功。
https://stackoverflow.com/questions/13064485
复制相似问题