如果我有这段代码:
public class PrLock {
private Lock lock1= new ReentrantLock();
private Lock lock2= new ReentrantLock();
private int num=0;
public void addLock1(){
lock1.lock();
try {
num++;
System.out.println(Thread.currentThread().getName()+" NUM "+num);
} finally{
lock1.unlock();
}
}
public void addLock2() {
lock2.lock();
try {
num++;
System.out.println(Thread.currentThread().getName()+" NUM "+num);
} finally{
lock2.unlock();
}
}
}
lock1
和lock2
之间有什么区别,它是一个简单的别名还是有不同的逻辑?
答案 0 :(得分:0)
如果你对这两种方法使用一个锁,你将无法同时执行它们。
因此,拥有两个锁意味着,在从Thread-A执行addLock1()时,您可以从Thread-B执行addLock2()。如果您有一个锁,则会阻止Thread-B。