siv*_*636 1 java concurrency multithreading thread-safety
我想知道静态方法是否java.lang.Math.max(int a, int b)
是线程安全的?
如果它不是线程安全的,你能解释一下这种方法由于多个线程的并发访问而带有错误输出的情况吗?
Jef*_*rey 14
这是线程安全的,为什么不呢?它没有状态,调用时没有对象被修改.该方法只是一个if语句:
public static int max(int a, int b) {
return (a >= b) ? a : b;
}
Run Code Online (Sandbox Code Playgroud)
Pet*_*rey 10
您只能从共享状态的并发访问中获得线程安全问题,其中至少有一个线程修改状态.
Math.max(a, b)
没有任何状态,共享或其他方式,所以它的线程安全.