是java.lang.Math.max(int a,int b)线程安全的



我想知道静态方法java.lang.Math.max(int a, int b)是否是线程安全的?

如果它不是线程安全的,你能用一段代码解释一下这种方法由于并发访问多个线程而给出错误输出的情况吗?

它是线程安全的,为什么不呢?它没有状态,当你调用它时,没有对象被修改。这个方法只是一个if语句:

public static int max(int a, int b) {
    return (a >= b) ? a : b;
}

Math.max是完全无状态的,因此它是完全线程安全的。

只有当至少有一个线程修改共享状态时,才能从共享状态的并发访问中获得线程安全问题。

Math.max(a, b)没有任何状态,无论是共享的还是其他的,所以它是线程安全的。

最新更新