【发布时间】:2016-11-11 10:55:30
【问题描述】:
我有一个静态方法
public static void abc(String str) {
// some code
str = str + "s";
// some code
}
假设这个方法被 100 个线程同时调用。
我认为 CPU 会调度所有这些线程来执行这个静态方法。
让我们扩大执行请求。现在,大约有 100000 个线程在同一时间调用此静态方法。
如果是这样,这将是性能开销(与此方法是类成员的情况相比)。我说的对吗?
【问题讨论】:
-
上下文切换线程的成本将远远超过静态与非静态的任何差异。
-
我不知道你在暗示什么。 what 对性能的影响究竟是什么?调用实例方法与调用静态方法有何不同?
-
@MarkoTopolnik 内存中只有一个类的静态方法实例。如果所有线程大约在同一时间调用此静态方法,则剩余线程可能需要等待时间。
-
好的,那么你的问题来自基本的误解。 any 方法只有一个实例,任何数量的线程都可以随时执行它。只有锁会导致互斥。
标签: java multithreading static java-threads