Зачем использовать ReentrantLock, если можно использовать синхронизированный (это)?

Я пытаюсь понять, что делает блокировку при одновременном использовании настолько важной, если можно использоватьsynchronized (this), В коде ниже, я могу сделать либо:

synchronized the entire method or synchronize the vulnerable area (synchronized(this){...}) OR lock the vulnerable code area with a ReentrantLock .

Код:

    private final ReentrantLock lock = new ReentrantLock(); 
    private static List<Integer> ints;

    public Integer getResult(String name) { 
        .
        .
        .
        lock.lock();
        try {
            if (ints.size()==3) {
                ints=null;
                return -9;
            }   

            for (int x=0; x<ints.size(); x++) {
                System.out.println("["+name+"] "+x+"/"+ints.size()+". values >>>>"+ints.get(x));
            }

        } finally {
            lock.unlock();
        } 
        return random;
}

Ответы на вопрос(6)

Ваш ответ на вопрос