Код: Выделить всё
public void doRun() {
synchronized (this) {
run();
}
}
private void run() {
synchronized (map) {
// Manipulate map
}
// Do other things
synchronized (map) {
// Manipulate map
}
}
Но я не понимаю, как это вообще возможно. Если поток B владеет монитором на карте, как он может не владеть и монитором на этом?
Это кажется невозможным, учитывая приведенный выше код, поскольку для входа в run() требуется владение монитором, а право собственности на монитор на карте приобретается только внутри run().
Что-то мне здесь не хватает?
Подробнее здесь: https://stackoverflow.com/questions/786 ... n-the-code