Я столкнулся с некоторым (рабочим!) кодом, который выглядит как приведенный ниже фрагмент:
synchronized(some_object) {
some_object = new some_object()
}
Я ожидаю, что это будет подвержено всем видам ужасных условия гонки, и что второй поток может войти в этот блок после создания нового объекта. Мои отбивные по Java недостаточно хороши, чтобы окончательно сформулировать ожидаемое поведение выше, поэтому любопытно, что вы, ребята, должны сказать, прежде чем я рефакторинг этого.