Это не потокобезопасно. Нет гарантии, когда, если когда-либо, другие потоки увидят изменение статической переменной res
.
Вы можете изменить его на:
static volatile int[] res = new int[10];
И тогда другие потоки гарантированно получат его при следующем использовании переменной res
.
В этом конкретном случае, когда вы только сбрасываете на ноль и не зависите от предыдущего значения res
, это, вероятно, достаточно хорошо.
В тех случаях, когда вы зависите от предыдущего значения (или других общих переменных), вам необходимо реализовать дополнительную синхронизацию между потоками.
Однако, одно предупреждение: другие потоки все еще могут манипулировать значениями в вашей переменной "copy
", так как они могли извлечь ссылку и удержать ее.