«Как к одной программе обращаются несколько клиентов»?
«Любая копия программы, сгенерированная для каждого клиента, потребляет программу»?
Вопрос слишком простой, но все же немного запутанный.
Рассмотрим фрагмент псевдокода ниже
Class Some {
// Some code
}
main(){
Some s= new Some();
}
Итак, теперь, если клиент попытается получить доступ к этому коду, будет создан объект ‘s’.
Вопрос в том, будет ли этот объект создан для каждого клиента (или клиентского запроса), который обращается к коду, или этот объект будет создан один раз в жизни (средства на развертывание кода)?
Я знаю, что сервлеты (или любой другой контейнер, основанный на языке) используются для обработки клиентских запросов, но я спрашиваю о программе, которую мы пишем, для использования несколькими клиентами.
Чтобы понять концепцию, я думаю, вам нужно будет углубиться в детали Java Memory Model. я думаю это ссылка отличный ресурс для начинающих.
Class Some {
// Some code
}
main(){
Some s= new Some();
}
Вопрос в том, будет ли этот объект создан для каждого клиента (или клиентского запроса), который обращается к коду, или этот объект будет создан один раз в жизни (средства на развертывание кода)?
Когда вы передаете / получаете доступ к s, это передает значение s, которое является ссылкой на некоторый объект. (само s передается по значению), которое не изменит того, на какой объект ссылается. Java строго передается по значению)
Когда вы изменяете значение в этом объекте с помощью s.someDataMember, то при повторном просмотре значения someDataMember другим клиентом вы увидите обновленное значение.
По сути, Java не копирует объекты, если вы действительно не попросите об этом. Теперь я имею в виду это в контексте того же процесса JVM.
Теперь рассмотрим, что этот объект является неизменным объектом.
Других решений пока нет …