Является ли java.lang.Math.max (int a, int b) потокобезопасным? - PullRequest
1 голос
/ 17 марта 2012

Мне интересно, является ли статический метод java.lang.Math.max(int a, int b) поточно-ориентированным?

Если он не поточнобезопасен, не могли бы вы объяснить ситуацию, когда этот метод дает неправильный вывод из-за одновременного доступа к нескольким потокамс куском кода?

Ответы [ 3 ]

14 голосов
/ 17 марта 2012

Это потокобезопасно, почему бы и нет?У него нет состояния, нет объектов, изменяемых при его вызове.Метод является просто оператором if:

public static int max(int a, int b) {
    return (a >= b) ? a : b;
}
12 голосов
/ 17 марта 2012

Math.max полностью без сохранения состояния, поэтому он полностью безопасен для потоков.

9 голосов
/ 17 марта 2012

Проблемы безопасности потоков возникают только при одновременном доступе к общему состоянию, когда хотя бы один поток изменяет его.

Math.max(a, b) не имеет никакого состояния, общего или другого, поэтому его потокобезопасен.*

...