Я пытаюсь понять, что делает блокировку в параллелизме настолько важной, если можно использовать 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;
}