gpt4 book ai didi

java - lock 是否锁定整个对象?

转载 作者:行者123 更新时间:2023-12-02 10:51:07 25 4
gpt4 key购买 nike

class Resource{
public Lock lock = new ReentrantLock();

public void A(){
lock.lock();
try{ .. }
finally{
lock.unlock();
}
}

public void B(){
lock.lock();
try{ .. }
finally{
lock.unlock();
}

}


public void C(){
... //Nothing to do with lock here
}
}

现在假设我有 3 个线程 T1、T2、T3 和一个名为 resourceResource 实例。

首先运行的是T1 调用resource.A()。现在,假设 resource.A() 需要 1500 分钟,如果 T2 在第 100 分钟内调用 resource.B() (意味着调用来自 T1 正在运行),会发生什么?

当我执行lock.lock()时,它锁定了对象还是锁定了方法

谢谢

最佳答案

锁由线程获取。因此,如果一个线程 X 持有该锁,则其他线程无法获取该锁,直到 X 释放该锁为止。

在您的情况下,方法 B 无法在方法 A 释放锁之前获取锁。

关于java - lock 是否锁定整个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52176246/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com