【发布时间】:2019-02-10 01:47:42
【问题描述】:
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 和一个名为 resource 的 Resource 实例。
首先运行的是T1 calls resource.A()。现在,假设 resource.A() 需要 1500 分钟,如果 T2 在第 100 分钟内调用 resource.B()(意味着来自 T1 的调用正在运行),会发生什么?
当我执行lock.lock() 时,它是锁定了对象还是锁定了方法?
谢谢
【问题讨论】:
-
Lock 锁住锁。
标签: java multithreading concurrency operating-system