在课堂上有两个ReentrantLock有什么好处?

时间:2015-05-13 21:50:06

标签: java locking reentrantlock

如果我有这段代码:

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之间有什么区别,它是一个简单的别名还是有不同的逻辑?

1 个答案:

答案 0 :(得分:0)

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

因此,拥有两个锁意味着,在从Thread-A执行addLock1()时,您可以从Thread-B执行addLock2()。如果您有一个锁,则会阻止Thread-B。