Всем привет!
Никак не могу разобраться как работает synchronized.
Например:
public void doSomething() {
synchronized (this) {
something1();
something2();
}
}
Тут вроде все понятно, два потока не смогут одновременно вызвать методы something1 и something2.
Мне непонятно следующее: synchronized (this). Зачем указывать (this)? почему нельзя просто:
public void doSomething() {
synchronized {
something1();
something2();
}
}
Что значит синхронизация по объекту?
Как я понял, блок кода, который заключен в synchronized не может быть выполнен параллельно несколькими потоками. Это понятно. Но что это за объект в круглых скобочках? Кто-нибудь может объяснить?