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

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)


Lou*_*man 12

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


Pet*_*rey 10

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

Math.max(a, b) 没有任何状态,共享或其他方式,所以它的线程安全.

  • 按州,我的意思是可以从一个州转变为另一个州.例如,c = 0,之后是c = 5.在Java术语中,必须有改变的字段. (4认同)
  • 或者数据库查询或文件系统访问.这也算作国家. (2认同)