Существуют ли общие правила/рекомендации для того, что делает метод потокобезопасным? Я понимаю, что, возможно, миллион разовых ситуаций, но что вообще? Это просто?
- Если метод обрабатывает только локальные переменные, он безопасен для потоков.
Это так? Это относится и к статическим методам?
Один ответ, предоставленный @Cybis, был:
Локальные переменные не могут быть разделены между потоками, потому что каждый поток получает свой собственный стек.
Это также относится к статическим методам?
Если метод передан ссылочным объектом, это ли предотвращает безопасность потока? Я провел некоторое исследование, и в некоторых случаях есть много проблем, но я надеялся, что с помощью нескольких правил вы сможете определить, какие методы должны быть безопасными в потоке.
Итак, я думаю, мой последний вопрос: "Есть ли короткий список правил, определяющих поточно-безопасный метод? Если да, то какие они?"
ИЗМЕНИТЬ
Здесь было много хороших моментов. Я думаю, что реальный ответ на этот вопрос: "Нет простых правил для обеспечения безопасности потоков". Круто. Хорошо. Но в целом я считаю, что принятый ответ дает хорошее краткое резюме. Всегда есть исключения. Быть по сему. Я могу жить с этим.