У меня есть тестовый веб-сервис, который я вызываю асинхронно.Я удивлен, что он работает нормально, хотя есть (не ленивый) синглтон, в котором метод get не имеет блокировки.
Например, в моем веб-сервисе есть синглтон с GetМетод (без блокировки), который вызывает ранее установленную Фабрику, затем фабрика создает новый объект из предварительно установленного подробного объекта и возвращает новый объект.
Таким образом, код будет действовать следующим образом:
MethodCalledFromSingleton{
Instantiate Obj A
Use stored object to set properties of Obj A
Instantiate Object B
Assign Object B to a property of Object A
Return Object A
}
В явно многопоточной среде один поток может создать экземпляр объекта, затем, прежде чем он вернется, другой поток может создать экземпляр другого объекта, а затем оба вернуть.Разве оба потока не могут указывать на одну и ту же ссылку?
Однако, как я уже сказал, у меня не возникает никаких проблем, поэтому концептуально асинхронные вызовы веб-службы работают иначе, чем явная обработка кода?