Нет, это может не работать в более сложном случае, но не из-за безопасности потока, а из-за неопределенного поведения статической инициализации объекта.
Допустим, ваш объект здесь:
static System_State stateInstance;
требуется другой статический объект, который вы получаете с другим статическим getInstance
.У вас нет уверенности, что это вернет действительный / построенный объект.
Если вы можете гарантировать, что этот объект не требует другого статического объекта, то у вас все будет хорошо.Но это проблема большого количества одноэлементных конструкций, вы должны уравновесить их, когда они созданы и потокобезопасны.