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”参数的开销
- 实际上,许多编译器无论如何都会对此进行优化
- 上下文切换线程的成本将远远超过静态方法调用与非静态方法调用之间的任何差异