美文网首页
多线程下Lock的理解

多线程下Lock的理解

作者: 太大_453b | 来源:发表于2018-04-25 16:33 被阅读19次

    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来进行安全操作

    分布式锁

    相关文章

      网友评论

          本文标题:多线程下Lock的理解

          本文链接:https://www.haomeiwen.com/subject/ujeylftx.html