java.lang.Math.max(int a,int b)线程安全吗?

时间:2012-03-17 15:08:59

标签: java multithreading concurrency thread-safety

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

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

3 个答案:

答案 0 :(得分:14)

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

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

答案 1 :(得分:12)

Math.max完全没有状态,所以它完全是线程安全的。

答案 2 :(得分:9)

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

Math.max(a, b)没有任何状态,共享或其他方式,因此其线程安全。