Предыдущую задачу crud решил сам. Решение несколько отличается от оригинала, но валидатор согласился что можно и так. Там все понятно. А эту задачу я в принципе не понимаю и решить ее не смог. Поэтому просто скопировал код решения. Объясните пожалуйста, зачем здесь нужны synchronized и volatile? Где здесь потоки кроме главного?