我已经读过,静态方法存储在JVM的类区域中。所以我们只有一个静态方法的副本。任何人都可以解释静态方法如何在java中为多个请求(使用多线程)并行运行。
答案 0 :(得分:6)
没有什么可以解释的。静态方法(或实际上是实例方法)是代码。线程用于执行代码。存储代码的地方与线程无关;您可以使用多个线程来执行相同的代码。
把它想象成一张纸上的食谱。如果你把食谱放在一个两个人都可以看到的软木板上,那么两个人都可以同时按照食谱。代码是食谱;软木板是计算机内存中加载代码的部分;人是线索。
重新your comment:
为每个正确创建的对象重复非静态方法
不,他们不是;它们没有理由,它们中没有特定于实例的信息。实例数据是按对象单独存储的,而不是实例方法。
本质上和对大量细节进行掩饰,实例方法只是一个静态方法,但在调用实例方法之前,JVM设置this
来引用调用该方法的对象,这样您就可以使用this
(显式或隐式)与对象的实例数据进行交互。 this
实际上只是该方法的一个不可见的参数。再一次,这掩盖了许多细节,但它足以让我们有一个基本的理解。