java 静态方法如何在多线程中并发或并行运行
How static methods runs concurrently or parallely in multithread in java
我读到过,静态方法存储在 JVM 的 class 区域中。所以我们只有一份静态方法。谁能解释 java.
中的多个请求(使用多线程)的静态方法 运行 是如何并行的
真的没什么好解释的。静态方法(或者实际上是实例方法)是 code。线程用于执行代码。代码存储在哪里与线程无关;您可以使用多个线程来执行相同的代码。
把它想象成一张纸上的食谱。如果你把食谱放在软木板上,两个人都能看到,那么两个人就可以同时按照食谱做。代码就是食谱;软木板是计算机内存中加载代码的部分;人就是线。
回复 :
non static methods are duplicated for each object created right
不,他们不是;他们没有理由,他们没有特定于实例的信息。实例 数据 每个对象单独存储,但不存储实例方法。
本质上并掩盖了很多细节,实例方法只是一个静态方法,但在调用实例方法之前,JVM 设置 this
来引用调用该方法的对象on,以便您可以使用 this
(显式或隐式)与对象的实例数据进行交互。 this
实际上只是该方法的一个不可见参数。同样,这掩盖了很多细节,但对于基本理解来说已经足够了。
我读到过,静态方法存储在 JVM 的 class 区域中。所以我们只有一份静态方法。谁能解释 java.
中的多个请求(使用多线程)的静态方法 运行 是如何并行的真的没什么好解释的。静态方法(或者实际上是实例方法)是 code。线程用于执行代码。代码存储在哪里与线程无关;您可以使用多个线程来执行相同的代码。
把它想象成一张纸上的食谱。如果你把食谱放在软木板上,两个人都能看到,那么两个人就可以同时按照食谱做。代码就是食谱;软木板是计算机内存中加载代码的部分;人就是线。
回复
non static methods are duplicated for each object created right
不,他们不是;他们没有理由,他们没有特定于实例的信息。实例 数据 每个对象单独存储,但不存储实例方法。
本质上并掩盖了很多细节,实例方法只是一个静态方法,但在调用实例方法之前,JVM 设置 this
来引用调用该方法的对象on,以便您可以使用 this
(显式或隐式)与对象的实例数据进行交互。 this
实际上只是该方法的一个不可见参数。同样,这掩盖了很多细节,但对于基本理解来说已经足够了。