x
является переменной экземпляра - другими словами, хотя только один поток может войти в этот блок за раз, они смотрят на разные переменные.Изменение значения x
в первом потоке не влияет на x
, который просматривает второй поток.
Другими словами, синхронизация "правильная" (если вы не хотитеболее одного потока для ввода этого блока независимо * от экземпляра , но ваш доступ к данным не делает то, что вы думаете.
В качестве примечания, я лично предпочитаю блокировать ссылки, которые только мой класс может видеть.
Поскольку еще одно примечание , было бы лучше, если бы Fern
реализовал Runnable
вместо расширения Thread
- выв настоящее время передает один поток другому конструктору, что не имеет особого смысла ...