Если у меня есть статическая служебная функция, которая не затрагивает статические переменные уровня класса, этот метод уже безопасен для потоков?
В большинстве случаев важно, чтобы ваш метод был reentrant .Нечто подобное повторяется, потому что все являются локальными переменными, и каждый поток получает свою собственную копию:
static int add(int a, int b)
{
return a + b;
}
Есть еще некоторые вещи, о которых следует позаботиться.Если вы передаете объект методу, а метод мутирует объект, и перед завершением метода вы снова вызываете тот же метод в другом потоке, но с тем же объектом , тогда возникает проблема.
Если у меня есть статический метод, который касается статических переменных класса, является ли этот метод потенциально безопасным для потоков?
Основная проблема снова заключается в том, являются ли переменные изменяемыми.Если вы читаете только из неизменяемых объектов, то проблем может не быть.
Если вы вызываете метод, и вы не уверены, является ли он реентерабельным, а документация не говорит, лучше предположить, что оннет.