Java 多线程中的静态方法

Java 多线程中的静态方法,java,multithreading,static,java-threads,Java,Multithreading,Static,Java Threads,我有一个静态方法 public static void abc(String str) { // some code str = str + "s"; // some code } 假设100个线程同时调用此方法 我认为CPU调度所有这些线程来执行这个静态方法 让我们放大执行请求。现在,大约有100000个线程同时调用这个静态方法 如果是这样,这将是一个性能开销(与此方法是类成员的情况相比)。我说的对吗?从操作系统调度程序的角度来看,该方法是否是静态的并不重要。在机器级

我有一个静态方法

public static void abc(String str) {
    // some code
    str = str + "s";
    // some code
}
假设100个线程同时调用此方法

我认为CPU调度所有这些线程来执行这个静态方法

让我们放大执行请求。现在,大约有100000个线程同时调用这个静态方法


如果是这样,这将是一个性能开销(与此方法是类成员的情况相比)。我说的对吗?

从操作系统调度程序的角度来看,该方法是否是静态的并不重要。在机器级别,这两个都只是带有一些参数的子程序。因此,除非两种方法都不同步,否则不会有任何区别。

从操作系统调度程序的角度来看,方法是否是静态的并不重要。在机器级别,这两个都只是带有一些参数的子程序。因此,除非两种方法都不同步,否则不会有任何区别。

  • 理论上,静态调用可以稍微提高效率,因为它不需要执行虚拟函数查找,而且还可以避免隐藏的“this”参数的开销
  • 实际上,许多编译器无论如何都会对此进行优化

  • 上下文切换线程的成本将远远超过静态方法调用与非静态方法调用之间的任何差异
      • 理论上,静态调用可以稍微提高效率,因为它不需要执行虚拟函数查找,而且还可以避免隐藏的“this”参数的开销
      • 实际上,许多编译器无论如何都会对此进行优化

      • 上下文切换线程的成本将远远超过静态方法调用与非静态方法调用之间的任何差异

      切换线程上下文的成本将远远超过静态与非静态线程之间的任何差异。我不知道您的意思。到底什么样的表现?调用实例方法与调用静态方法有何不同?@MarkoTopolnik内存中只有一个类的静态方法实例。如果所有线程都在同一时间调用这个静态方法,那么剩下的线程可能需要等待一段时间。任何方法只有一个实例,任何数量的线程都可以随时执行它。只有锁会导致互斥。上下文切换线程的成本将远远超过静态与非静态线程之间的任何差异。我不知道你的意思。到底什么样的表现?调用实例方法与调用静态方法有何不同?@MarkoTopolnik内存中只有一个类的静态方法实例。如果所有线程都在同一时间调用这个静态方法,那么剩下的线程可能需要等待一段时间。任何方法只有一个实例,任何数量的线程都可以随时执行它。只有锁才能导致互斥。