Я знаю разницу между синхронизированным методом и синхронизированным блоком, но я не уверен в части синхронизации.
Предполагая, что у меня есть этот код
class Test {
private int x=0;
private Object lockObject = new Object();
public void incBlock() {
synchronized(lockObject) {
x++;
}
System.out.println("x="+x);
}
public void incThis() { // same as synchronized method
synchronized(this) {
x++;
}
System.out.println("x="+x);
}
}
В этом случае в чем разница между использованием lockObject и использованием этого как блокировки? Кажется, что то же самое для меня.
Когда вы решите использовать синхронизированный блок, как вы решаете, какой из объектов является блокировкой?