контексте синхронизации методов целиком. Судя по байт-коду, synchronized(lock) { } генерирует несколько объявлений перед блоком синхронизации, которые не атомарны. И вызов метода содержащего внутри такой блок еще не гарантирует, что тут же будет выполнена блокировка и есть возможность другому потоку успеть вызвать другой синхронизированный метод. Так?
Столкнулся с ситуацией, что в тело метода попасть успеваю, но в блок синхронизации нет и другой поток успевает вызвать другой синхронизированный метод...
Если в методе перед synchronized нет вашего кода, то как вы можете заметить отличие?
Обсуждают сегодня