2012-03-17 2 views
1

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

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

+7

У вас более 30 вопросов без принятого ответа. +1 для запроса ответного вопроса. –

+0

@PeterLawrey, но не настоящий вопрос, поэтому -1. – EJP

ответ

9

Вы можете получить только вопросы безопасности нитки от параллельного доступа общего состояния, где по меньшей мере один поток изменяет состояние.

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

+0

Что вы подразумеваете под «государством»? Вы имеете в виду статический метод? Тогда все статические методы становятся потокобезопасными ?! :-) – siva636

+4

По состоянию, я имею в виду что-то, что может измениться из одного состояния в другое. например c = 0, а затем - c = 5. В выражениях Java должны быть изменены поля. –

+2

Или запрос базы данных или доступ к файловой системе. Это тоже считается государством. –

12

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

+0

Что вы подразумеваете под «государством»? Вы имеете в виду статический метод? Тогда все статические методы становятся потокобезопасными ?! :-) – siva636

+1

Метод _stateless_, если он всегда будет, несмотря ни на что, возвращает тот же вывод на том же входе. –

+1

@Louis: Не обязательно, метод может записывать в файл (который не является потокобезопасным), возвращая 0 для любого ввода. – danielkza

14

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

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

Что вы подразумеваете под «состоянием»? Вы имеете в виду статический метод? Тогда все статические методы становятся потокобезопасными ?! :-) – siva636

Смежные вопросы