зачем он написал помещать разделяемый ресурс внутрь объекта
Вообще-то, в джаве все объекты. Без них вы точно не обойдетесь
Или можно сделать только метод совместно разделяемым ресурсом без засовывания его в объект?
"Эти два способа записи означают одно и то же:"
public void swap() {
synchronized (this)
{
//...логика метода
}
}
public synchronized void swap() {
}
}
synchronized всегда имеет отношение к какому-то объекту. Либо
this, либо с явным указанием. Например:
public class Main {
private Object obj = new Object();
public void doSomething() {
//...какая-то логика, доступная для всех потоков
synchronized (obj) {
//логика, которая одновременно доступна только для одного потока
}
}
}
по мотивам
Оператор synchronized в Java