概念解释:
公平锁,指的是在进行锁的竞争中,没有获得锁的线程,当锁被释放时,会按照竞争线程的先后顺序依次进行锁的获取,先到先得,体现公平性;
非公平锁,指的是锁释放后,竞争锁的线程不会按照先后顺序来获取被释放的锁,结果具有随机性,故不体现公平性;
实例分析: 以ReentrantLock 为例,分别实现公平锁及非公平锁案例;
/*** * 公平锁实现: * ReentrantLock 构造方法中可以设置为true,代表公平锁,false,代表非公平锁; * * 实例逻辑: * 主线程占用锁,并创建10个子线程分别命名为1-10,依次竞争主线程的锁,主线程释放,查看子线程名称打印结果是否有序; * * (注:这里的代码暂时认为锁的释放前不会出现异常,但是实际开发中释放锁的操作可能需要放到finally中;) * * */ public class FairLock { private static ReentrantLock reentrantLock = new ReentrantLock(true); public static void main(String[] args) { System.out.println(" -- Main Thread Start -- "); reentrantLock.loc