def isSafe( i:Int) = { var count = i var acc = 0 while(count!=0){ acc += i*i count -= 1 } acc }
Если под безопасным вы подразумеваете, что он возвращает один и тот же результат независимо от того, сколько потоков его вызывает и в каком порядке, тогда да, это безопасно. Это связано с тем, что он не изменяет никакие общие области памяти, а только свои локальные переменные.
Это безопасно, нет общего состояния, которое могло бы привести к загрязнению между потоками.
Это также чрезмерно сложно, следующее определение и короче, и быстрее:
def isSafe(i: Int) = i * i * i