Java多线程之乐观锁与悲观锁;公平锁与非公平锁

2019-09-28  本文已影响0人  魂之挽歌w

乐观锁与悲观锁;公平锁与非公平锁

首先来讲讲乐观锁与悲观锁;公平/非公平锁的概念,这两种锁的概念其实是两个维度的,乐观/悲观锁是针对多线程之间数据共享维度的;而公平/非公平锁是多线程执行顺序维度的,一般乐观/悲观锁开发中接触地多一些,下面详细讲一讲:

乐观锁与悲观锁

公平锁与非公平锁

//创建一个非公平锁,默认是非公平锁

Lock nonFairLock= new ReentrantLock();

Lock nonFairLock= new ReentrantLock(false);

//创建一个公平锁,构造传参true

Lock fairLock= new ReentrantLock(true);

适用场景:

  实际工作中,我们更多的是直接使用非公平锁:非公平锁比公平锁性能高5-10倍,因为公平锁需要在多核情况下维护一个队列,如果当前线程不是队列的第一个无法获取锁,增加了线程切换次数。

参考

上一篇 下一篇

猜你喜欢

热点阅读