Поток безопасно во время цикла - PullRequest
3 голосов
/ 14 февраля 2020

У меня есть такой код:

while(true){
    var x = get();
    new Thread(()->parse(x)).start();
}

До меня дошло, что это не может быть потокобезопасным, поскольку переменная x может быть (?) Переназначена.

Однако Кажется, моя функция работает нормально.

Это действительно безопасно?

1 Ответ

3 голосов
/ 14 февраля 2020

Переменная x в вашем коде должна быть по сути финальной , что означает, что она не может быть переназначена. См., Например, это объяснение или этот вопрос о переполнении стека .

Но решение в целом не является поточно-ориентированным, когда x является объектом, и к его полям можно получить доступ из снаружи. В таких случаях все изменения полей x должны быть синхронизированы.

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