多线程中的静态方法

cha*_*yam 1 java static multithreading java-threads

我有一个静态方法

public static void abc(String str) {
    // some code
    str = str + "s";
    // some code
}
Run Code Online (Sandbox Code Playgroud)

让我们假设这个方法由100个线程同时调用.

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

允许扩展执行请求.现在,大约有100000个线程同时调用这个静态方法.

如果是这样,那将是性能开销(与此方法是类的成员的情况相比).我对么?

sah*_*ora 5

  • 理论上,静态调用可以稍微提高效率,因为它不需要进行虚函数查找,也可以避免隐藏的"this"参数的开销.
  • 实际上,许多编译器无论如何都会优化它.
  • 由于静态和非静态方法调用,上下文切换线程的成本将远远超过任何差异