静态方法如何在java中的多线程中并发或并行运行

vij*_*mar -1 java multithreading synchronization

我已经读过,静态方法存储在JVM的类区域中.所以我们只有一个静态方法的副本.任何人都可以解释静态方法如何在java中为多个请求(使用多线程)并行运行.

T.J*_*der 6

没有什么可以解释的.静态方法(或实际上是实例方法)是代码.线程用于执行代码.存储代码的地方与线程无关; 您可以使用多个线程来执行相同的代码.

把它想象成一张纸上的食谱.如果你把食谱放在一个两个人都可以看到的软木板上,那么两个人都可以同时遵循这个食谱.代码是食谱; 软木板是计算机内存中加载代码的部分; 人是线程.

回复您的评论:

对于每个正确创建的对象,都会复制非静态方法

不,他们不是; 它们没有理由,它们中没有特定于实例的信息.实例数据按对象单独存储,但不是实例方法.

实质上和掩盖了很多细节,实例方法只是一个静态方法,但在调用实例方法之前,JVM设置this为引用调用该方法的对象,以便您可以使用this(显式或隐式地)与对象的实例数据进行交互.this实际上只是方法的一个不可见的参数.同样,这掩盖了许多细节,但它足以让我们有一个基本的理解.