В некоторых выполнениях он будет иметь тот же поток, что и синхронизация целых функций, конечно - но для того, чтобы он был действительно эквивалентен синхронизации метода, он должен был бы иметь тот же поток для все выполнения.
Таким образом, существует вероятность того, что другой поток захватит блокировку (для этого метода или для некоторого другого кода, блокирующего на том же мониторе) на половине выполнения.Это не могло бы произойти, если бы сам метод был синхронизирован, поэтому они не эквивалентны.
(Кроме того, блокировка на this
обычно считается плохой практикой; я не могу вспомнитьв прошлый раз я написал синхронизированный метод. Вместо этого я блокирую частные мониторы, так что я знаю, что мой код - единственный код, который может их заблокировать.)
РЕДАКТИРОВАТЬ: Чтобы ответить на ваши изменения:
Все, что мне нужно знать, это то, могу ли я рассчитывать на все контексты выполнения, что оба потока (например, Thread1 и Thread2) могут быть в методе одновременно, например, thread2 в первом блоке синхронизации и thread1 ввторой блок синхронизации для достижения параллелизма
Абсолютно нет!Гарантируется, что у не будет двух потоков в синхронизированном блоке, синхронизированных на одном мониторе.
У вас есть три раздела кода: первый синхронизированный блок, несинхронизированная часть ивторая синхронизированная часть.
В несинхронизированной части может одновременно выполняться любое количество потоков.Для любого одного экземпляра (поскольку вы синхронизируете на this
) только один поток может выполнять или синхронизированных блоков.Если вы хотите достичь параллелизма, вам нужно будет синхронизировать данные на разных мониторах.
Более того, звучит так, как будто вам нужны гарантии того, что планировщик позволит другому потоку захватить блокировку, если он ее ждет.Я не верю, что есть такая гарантия - поток, выполняющий первый блок, может снять блокировку, но продолжить в том же временном интервале и повторно получить его до того, как в него попадут другие потоки. В некоторых JVM это может не произойти, но я неЯ не верю, что есть какая-то гарантия.