0

如果我有这个代码:

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();
        }
    }
}

和有什么区别lock1lock2是简单的别名还是有不同的逻辑?

4

1 回答 1

0

如果您对这两种方法使用一个锁,您将无法同时执行它们。

因此,拥有两个锁意味着,在从 Thread-A 执行 addLock1() 时,您可以从 Thread-B 执行 addLock2()。如果你有一把锁,线程 B 将被阻塞。

于 2015-05-13T22:26:48.240 回答