#android
#Android
Вопрос:
Есть ли какие-либо недостатки в синхронизации каждого из ваших методов в Android?
Комментарии:
1. Да, он не будет делать то, что вы думаете.
Ответ №1:
Да — в конечном итоге это приведет к снятию блокировок, когда они вам действительно не нужны. Это не даст вам потокобезопасности бесплатно — это просто замедлит ваш код и повысит вероятность того, что вы столкнетесь с тупиками из-за снятия слишком большого количества блокировок.
Вам нужно явно подумать о безопасности потоков и синхронизации. Обычно я делаю большинство классов не потокобезопасными и пытаюсь ограничить количество мест, где я думаю о потоковой передаче.
Подход «сделать все синхронизированным» является распространенным в том, что я считаю четырьмя этапами понимания потоков для разработчиков:
- Полное невежество: нет синхронизации, нет осведомленности о потенциальных проблемах
- Некоторая осведомленность, но вера в то, что универсальная синхронизация лечит все болезни
- Болезненный этап понимания того, где есть проблемы, и большой заботы о том, чтобы все было правильно
- Мифическая стадия естественного получения всего правильного
Насколько я могу судить, большинство опытных разработчиков находятся на стадии 3 — с разным уровнем удобства, конечно. Использование неизменности, абстракций более высокого уровня вместо низкоуровневых примитивов и т. Д. Очень Помогает, Но в конечном итоге вам, вероятно, придется много думать, когда у вас есть несколько потоков, которым необходимо совместно использовать состояние.
Комментарии:
1. Спасибо, у меня было ощущение, что это не может быть так просто 🙂