带你搞懂Java多线程(五)

2020-01-05  本文已影响0人  爺珍爱那颗心

带你搞懂Java多线程(一)
带你搞懂Java多线程(二)
带你搞懂Java多线程(三)
带你搞懂Java多线程(四)

synchronized的缺点

Lock接口和核心方法

Lock(显示锁)

Lock是一个接口,只能手动的获取和释放锁,属于Java语法层面的锁,解决了synchronized的缺点
注意 使用lock.lock()后,应将lock.unlock();放在finally中;

public void add(){
  lock.lock();
   try{
    count++;
    }finally{
      lock.unlock();
    }
}

可重入锁ReentrantLock

允许一个线程反复多次的去拿同一把锁。
递归调用的时候,防止一个线程自己把自己锁死。

锁的公平和非公平

哪个更好

性能上非公平锁比公平锁性能更好,因为如果是公平锁,线程拿不到锁会挂起,而线程挂起导致的上下文切换会浪费时间周期。

上一篇 下一篇

猜你喜欢

热点阅读