"多个客户如何访问单个程序"?
"为每个客户生成的程序副本是否都使用该程序"?
问题太简单了,但仍然有点令人困惑。 考虑下面的一段伪代码 -
Class Some {
// Some code
}
main(){
Some s= new Some();
}
所以,现在,如果客户试图访问这段代码,那么对象就是'将被创建。
问题是,是否将为访问代码的每个客户端(或客户端请求)创建此对象,否则此对象将在生命周期中创建一次(意味着部署代码)?
我知道servlet(或任何其他基于语言的容器)用于处理客户端请求,但我问的是我们编写的程序被多个客户端使用。
答案 0 :(得分:1)
为了理解这个概念,我认为你需要深入研究Java Memory Model的细节。我想这是link is a great resource for beginners。
Class Some {
// Some code
}
main(){
Some s= new Some();
}
问题是,是否将为访问代码的每个客户端(或客户端请求)创建此对象,否则此对象将在生命周期中创建一次(意味着部署代码)?
当你传递/访问s时,传递s的值,这是对Some对象的引用。 (s本身是通过值传递的),它不会改变所引用的对象。 Java严格按值传递
当您使用s.someDataMember更改该对象中的值时,另一个客户端再次查看someDataMember的值将会看到更新的值。
基本上,除非你真的要求,否则Java不会复制对象。现在我在相同的JVM进程的上下文中引用它。
现在考虑这个对象是一个不可变对象。