多线程下Lock的理解

java.util.concurrent.locks.Lock接口

简介

在多少线程的线程安全处理方式上大概分为
  • synchronized
  • lock
  1. synchronized介绍:JAVA的关键字;可给当前的方法加锁,使的线程在执行的排队
public void getTicks(){
    synchronized (Object.class){
        //加锁代码块
    }
}
优缺点分析
  • 操作相对简单,对简单的多线程业务比较方便
  • 暴力加锁,加锁除非当前线程放开锁,或者线程死亡 由JVM释放,不然会一直拿着锁,
  • 线程拿不到当前锁的状态,不知道哪个线程拿到了锁,
  • 在进行IO操作时,一旦由于网络等原因,容易造成死锁

Lock实现代码锁

    Lock l = ...; 
     l.lock();
     try {
         // access the resource protected by this lock
     } finally {
         l.unlock();
     }

Lock分为乐观锁和悲观锁

  • 乐观锁 read锁,可以支持多线程同时获取
  • 悲观锁 类似synchronized
优缺点
  • Lock线程在拿到锁的时候,其他线程可以不断尝试获取锁,不会一直等待
  • 可以设置超时时间,超出后抛出异常
  • 支持乐观锁

在实际应用中建议使用Lock来进行安全操作

分布式锁

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.解决信号量丢失和假唤醒 public class MyWaitNotify3{ MonitorObject m...
    Q罗阅读 922评论 0 1
  • Java8张图 11、字符串不变性 12、equals()方法、hashCode()方法的区别 13、...
    Miley_MOJIE阅读 3,744评论 0 11
  • 我们要每天节约用水,珍惜水还有电,不要浪费和谐环保,只有这样我们的地球才可以有更好的环境,这样我们可以给环卫工人们...
    家和万事兴_f01c阅读 155评论 0 0
  • 想想四年前来这个学校的时候,还是一个没见过大城市的农村娃儿,感觉自己与这座城市格格不入。但是在大学的这四年经过了太...
    刘水阅读 203评论 0 0
  • 罗艺作业本阅读 236评论 0 0