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

lock1との違いは何ですかlock2、それは単純なエイリアスですか、それとも別のロジックがありますか?

4

1 に答える 1

0

これら 2 つのメソッドに 1 つのロックを使用すると、それらを同時に実行することはできません。

したがって、2 つのロックがあるということは、スレッド A から addLock1() を実行しているときに、スレッド B から addLock2() を実行できることを意味します。ロックが 1 つある場合、スレッド B はブロックされます。

于 2015-05-13T22:26:48.240 に答える