Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 11 лет назад пользователемДемид Спичаков
1 §67 Избегайте излишней синхронизации
2 Для того, чтобы избежать падений и проблем с безопасностью, никогда не передавайте управление клиенту в synchronized блоке.
3 Где:
4 Но! Дурацкие примеры будут работать
5 ConcurrentModificationException Мы пытаемся удалить эл-т из списка, не закончив бежать по его эл-там
6 Deadlock: фоновый поток пытается залочить observers, в то время как основной ждет его завершения
7 К счастью, как правило, это довольно легко исправить. Или используя thread-safe CopyOnWriteArrayList, заплатив за это созданием копии массива при каждой операции изменения
8 Нет synchronized блоков – и эта реализация thread-safe Как правило справедливо следующее: делайте как можно меньше операций внутри synchronized блока
9 String StringBuffer StringBuilder Ужас Лучше, но все операции синхронизированы Все очень быстро и не синхронизировано Всегда следует синхронизировать изменение static величин Как правило нет нужды делать ваш класс thread-safe, и работающим даже в условиях ядерной зимы. Но есть необходимость документировать это!
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.