相关疑难解决方法(0)

将synchronized()与ReentrantLock.lock()混合

在Java中,做ReentrantLock.lock()ReetrantLock.unlock()使用相同的锁定机制synchronized()

我的猜测是"不",但我希望是错的.

例:

想象一下,线程1和线程2都可以访问:

ReentrantLock lock = new ReentrantLock();
Run Code Online (Sandbox Code Playgroud)

线程1运行:

synchronized (lock) {
    // blah
}
Run Code Online (Sandbox Code Playgroud)

线程2运行:

lock.lock();
try {
    // blah
}
finally {
    lock.unlock();
}
Run Code Online (Sandbox Code Playgroud)

假设线程1首先到达其部分,然后在线程1完成之前到达线程2:线程2将等待线程1离开synchronized()块,还是继续运行?

java locking synchronized reentrancy

15
推荐指数
2
解决办法
5523
查看次数

标签 统计

java ×1

locking ×1

reentrancy ×1

synchronized ×1