1.非公平锁有两次的抢锁机会

       1.进入AQS同步队列之前

        2.进入AQS同步队列后

非公平锁第一次抢锁失败后,会进入AQS同步队列排序,当位于队首时会和其他线程开始抢锁。

非公平锁抢锁分析

 

2.性能分析:

公平锁和非公平锁的性能是不一样的,非公平锁的性能会优于公平锁。为什么呢?因为公平锁在获取锁时,永远是等待时间最长的线程获取到锁,这样当线程T1释放锁以后,如果还想继续再获取锁,它也得去同步队列尾部排队,这样就会频繁的发生线程的上下文切换,当线程越多,对CPU的损耗就会越严重。
非公平锁性能虽然优于公平锁,但是会存在导致线程饥饿的情况。在最坏的情况下,可能存在某个线程一直获取不到锁。不过相比性能而言,饥饿问题可以暂时忽略,这可能就是ReentrantLock默认创建非公平锁的原因之一了。

 

相关文章:

  • 2022-12-23
  • 2021-10-30
  • 2022-12-23
  • 2022-12-23
  • 2021-11-22
  • 2021-08-04
猜你喜欢
  • 2022-01-24
  • 2021-09-09
  • 2021-10-24
  • 2022-12-23
相关资源
相似解决方案