Locale.setDefault(...)
не имеет ограничений относительно того, когда и сколько раз он может быть вызван. Менеджер безопасности может предотвратить изменение, но я предполагаю, что это не ваш случай, поскольку вы не упоминаете никаких исключений (на всякий случай, однако, проверьте, не скрываете ли вы SecurityException
в блоке try-catch) .
Другая причина, по которой вы можете наблюдать такое поведение: возможно, ваше приложение получает локаль по умолчанию только один раз, кэширует ее и использует навсегда?