美文网首页
可重入锁

可重入锁

作者: 七月_JulyFY | 来源:发表于2019-08-23 10:17 被阅读0次

Synchronized 与 ReenTrantLock (前2者都是悲观锁),2者都是可重入锁

比如说A类中有个方法

public synchronized methodA1(){

        methodA2();
}

而且

public synchronized methodA2(){

                    //具体操作
}

也是A类中的同步方法,当当前线程调用A类的对象methodA1同步方法,如果其他线程没有获取A类的对象锁,那么当前线程就获得当前A类对象的锁,然后执行methodA1同步方法,方法体中调用methodA2同步方法,当前线程能够再次获取A类对象的锁,而其他线程是不可以的,这就是可重入锁。

不可重入锁:

public class Lock{
    private boolean isLocked = false;
    public synchronized void lock() throws InterruptedException{
        while(isLocked){    
            wait();
        }
        isLocked = true;
    }
    public synchronized void unlock(){
        isLocked = false;
        notify();
    }
}


使用该锁:

public class Count{
    Lock lock = new Lock();
    public void print(){
        lock.lock();
        doAdd();
        lock.unlock();
    }
    public void doAdd(){
        lock.lock();
        //do something
        lock.unlock();
    }
    
当前线程执行print()方法首先获取lock,接下来执行doAdd()方法就无法执行doAdd()中的逻辑,必须先释放锁。这个例子很好的说明了不可重入锁。

ReentrantLock与synchronized比较:

1.前者使用灵活,但是必须手动开启和释放锁

2.前者扩展性好,有时间锁等候(tryLock( )),可中断锁等候(lockInterruptibly( )),锁投票等,适合用于高度竞争锁和多个条件变量的地方

3.前者提供了可轮询的锁请求,可以尝试去获取锁(tryLock( )),如果失败,则会释放已经获得的锁。有完善的错误恢复机制,可以避免死锁的发生

相关文章

  • ReentrantLock 源码分析

    锁的基本概念 可重入锁 Reentrant 就是可重入的意思,如果锁具备可重入性,则称作为可重入锁。像synchr...

  • java可重入锁

    可重入概念: java的可重入锁: 可重入锁的一种实现方式: 可重入锁的两种使用例子: 例子1: 例子2: 例子1...

  • Java 可重入锁 公平锁 读写锁

    1.可重入锁 如果锁具备可重入性,则称作为可重入锁。 像synchronized和ReentrantLock都是可...

  • Java中的各种锁

    一个线程中的多个流程能不能获取同一把锁:可重入锁和非可重入锁 可重入锁 可重入性:表明了锁的分配机制,是基于线程的...

  • 可重入锁和非可重入锁

    1 可重入锁 (ReentrantLock和synchronized)可重入锁指的是可重复可递归调用的锁,在外层使...

  • J.U.C-AQS-ReentrantLock

    ReentrantLock(可重入锁)和synchronized区别 可重入性 锁的实现(ReentrantLoc...

  • Java温故而知新之Lock与Synchronized

    两者比较: 相关概念解析 可重入锁如果锁具备可重入性,则称作为可重入锁。假设方法A需要获取锁,方法B也需要获取锁,...

  • 可重入锁-面试题:synchronized是可重入锁吗?

    前言 面试题:synchronized是可重入锁吗? 答案:synchronized是可重入锁。Reentrant...

  • 可重入锁-synchronized是可重入锁吗?Reentran

    前言 面试题:synchronized是可重入锁吗? 答案:synchronized是可重入锁。Reentrant...

  • 各种锁的概念

    锁的概念 可重入不可重入公平锁非公平锁锁中断通过一个故事理解可重入锁的机制 - 小勇DW3 - 博客园[https...

网友评论

      本文标题:可重入锁

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