永发信息网

如何理解ReentrantLock的可重入和互斥

答案:1  悬赏:0  手机版
解决时间 2021-04-06 20:33
  • 提问者网友:了了无期
  • 2021-04-06 17:26
如何理解ReentrantLock的可重入和互斥
最佳答案
  • 五星知识达人网友:笑迎怀羞
  • 2021-04-06 18:10
lock.lock
aaa
bbb
ccc
lock.unlock

互斥是表示同一时刻,多个线程中,只能有一个线程能进入aaa bbb
ccc部分。但是多个线程都可以调用lock方法,只有一个会成功,其他的线程会被阻塞,直到unlock方法被调用

可重入的意思是某一个线程是否可多次获得一个锁,比如synchronized就是可重入的,ReentrantLock也是可重入的

代码如下

Java代码

class Parent {

protected Lock lock = new ReentrantLock();

public void test() {

lock.lock();

try {

System.out.println("Parent");

} finally {

lock.unlock();

}

}

}

class Sub extends Parent {

@Override

public void test() {

lock.lock();

try {

super.test();

System.out.println("Sub");

} finally {

lock.unlock();

}

}

}

public class AppTest {

public static void main(String[] args) {

Sub s = new Sub();

s.test();

}

}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯