java锁的公平性

修改所的公平性:

ReentrantLock和ReentrantReadWirteLock类的构造器都含有一个布尔参数fair,它允许你控制这两个类的行为。

(1)默认fair的值是false,它称为非公平模式,在非公平模式下,当有很多线程在等待锁(ReentrantLock和ReentrantReadWriteLock)时,锁将选择他们中的一个来访问临界区,这个选择是没有任何约束的

(2)如果fair值是true,则称为公平模式。在公平模式下,当有很多在等待锁(ReentrantLock和ReentrantReadWriteLock)时,锁将选择它们中的一个来访问临界区,而且只选择等待时间最长的线程。这两种模式只适用于lock()和unlock()方法,Lock接口中的tryLock()方法没有将线程置于休眠,fair属性并不影响这个方法。




你可能感兴趣的:(java)