java - 多线程中的静态方法

标签 java multithreading static java-threads

我有一个静态方法

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

假设此方法同时被 100 个线程调用。

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

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

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

最佳答案

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

关于java - 多线程中的静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40546484/

相关文章:

java - jvm如何处理多个处于可运行状态的线程

来自其他 bean 的 JSF Bean 属性

ios - 如何使动态 uitableview 单元格看起来像静态 uitableview 单元格

java - 数组是否有类似迭代器的函数(或解决方法)?

java - 有没有办法覆盖 openjpa 中的 javax.persistence.EntityManager.persist() 方法

java - if 语句 OR 逻辑奇数

java - 重载静态变量是否需要静态后期绑定(bind)?

java - 使用 Struts2 迭代器迭代 JSON 字符串 - 没有打印任何内容

multithreading - 如何加入Promela中的流程?

c++ - 如何在 QThread 上创建 QTcpServer 然后从主线程中停止它