我想知道静态方法java.lang.Math.max(int a, int b)
是否是线程安全的?
如果它不是线程安全的,你能解释一下这个方法由于多个线程的并发访问而导致错误输出的情况吗?
答案 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)
没有任何状态,共享或其他方式,因此其线程安全。