В Java я должен скопировать изменчивую ссылку локально, прежде чем использовать ее в foreach

Если у меня есть следующее

private volatile Collection ints;

private void myMethod()
{
   for ( Integer i : ints )
   {
      ...
   }
}

Коллекция ints никогда не изменяется, но вся коллекция может быть заменена другим потоком (так что это неизменяемая коллекция).

Должен Я копирую переменную ints локально, прежде чем повторять ее? Я не уверен, что к нему будут обращаться несколько раз. т. е. итерация коллекции, другой поток заменяет коллекцию, код продолжает повторяться, но с новой коллекцией.

EDIT : Этот вопрос имеет отношение к дополнительной информации о внутренней работе foreach.

14
задан Community 23 May 2017 в 12:06
поделиться