Параметры в статических методах Java являются потокобезопасными? - PullRequest
0 голосов
/ 14 мая 2018

У меня есть веб-приложение на Java JSP / Servlet

Мой запрос:

Если у меня есть метод util следующим образом

public static String doUtil(String param) {

    //Some processing on param.........

    String result = someProcess(param);

    return result;

}

Запрос, если этот метод будет доступен в сервлете Class.method(param), будет ли он потокобезопасным для нескольких запросов от разных клиентов в Интернете?

Ответы [ 4 ]

0 голосов
/ 14 мая 2018

Будет поточно-ориентированным, если содержимое функции поточно-ориентированным. Например. если это чистая функция (работает только с входными данными), она будет поточно-ориентированной. Если она использует другую статическую функцию, которая не является поточно-ориентированной, то она также не является поточно-ориентированной.

0 голосов
/ 14 мая 2018

Да. Но только потому, что вы передаете String, которая является неизменной. Статические методы опасны, только если они изменяют некое глобальное состояние. Искать в Google: «функция без побочных эффектов»

0 голосов
/ 14 мая 2018

В соответствии с примером, который вы привели, он выглядит как чисто статическая функция.

Функция называется чистой функцией, если она всегда возвращает один и тот же результат для одинаковых значений аргумента и не имеет сторонытакие эффекты, как изменение аргумента (или глобальной переменной) или вывод чего-либо.Единственный результат вызова чистой функции - возвращаемое значение.Примерами чистых функций являются strlen (), pow (), sqrt () и т. Д.

https://www.geeksforgeeks.org/pure-functions/

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

0 голосов
/ 14 мая 2018

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

Кроме того, ваш параметр имеет тип String.Тип строки является неизменяемым и, следовательно, потокобезопасным.

Вышеприведенное справедливо как для статических, так и для экземпляров методов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...