Я пытаюсь понять, что делает блокировку в параллелизме настолько важной, если можно использовать synchronized (this). В коде ниже, я могу сделать либо:
-  синхронизировать весь метод или синхронизировать уязвимую область (synchronized(this){...})
- ИЛИ заблокируйте уязвимую область кода с помощью 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;
}
