多线程中的静态方法

时间:2016-11-11 10:55:31

标签: java multithreading static java-threads

我有一个静态方法

public static void abc(String str) {
    // some code
    str = str + "s";
    // some code
}

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

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

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

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

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:4)

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