§67 Избегайте излишней синхронизации. Для того, чтобы избежать падений и проблем с безопасностью, никогда не передавайте управление клиенту в synchronized.

Презентация:



Advertisements
Похожие презентации
§68 Лучше executors and tasks, чем потоки. Executor framework - 1.5, java.util.concurrent –выключить (.shutdown() ) –ждать пока не выполнится один или.
Advertisements

§66 Синхронизированный доступ к разделяемым mutable данным.
§15 Минимизируйте mutability. Признаки immunable класса Не создавайте методов, способных изменить состояние объекта (mutators) Убедитесь, что от класса.
Регистры (registers) Стек (stack) Куча (heap) Статическое хранилище (static) Постоянное хранилище - код программы Не-оперативная память (streams, persistent)
Что такое счастье?
Параллелизм и потоки в Java For students of university Author: Oxana Dudnik.
Что? ___________________________ Какой? ____________________ _____________________ Что делает? Что делал? _________________ ________________ ____________.
Работа с системой управления версиями при Agile разработке Малышкин Фёдор 25 апреля 2008.
Пример1 Мир
Многопоточное программирование на Java Java Advanced.
Многопоточное программирование Синхронизация потоков Лекция 11.
ПОСОБНИКИ БИЗНЕСА.... СИСТЕМА НАЛОГОВОЙ БЕЗОПАСНОСТИ.
Режим дня Слайд 1. Слайд 2 Взялся за дело не отвлекайся.
А я делать много-много дел могу Я могу свистеть как ветер на бегу Как трава росту, как мячик прыгаю И всегда пою-пою-пою.
Ассоциативные списки Поиск данных происходит не по индексу или положению объекта, а по его ассоциативной связи: public interface Map { // Доступ к объектам.
Многопоточное программирование на Java Java Advanced.
ПОТОКИ Начальные сведенияПОТОКИ Начальные сведения.
Покинут счастьем будет тот, Кого ребенком плохо воспитали. Побег зеленый выпрямить легко, Сухую ветвь один огонь исправит.
Ребёнок учится тому, Что видит у себя в дому, Родители пример тому! Себастьян Бранта 15 век.
Стрессы всегда нужно перебарывать, а конфликты избегать!
Транксрипт:

§67 Избегайте излишней синхронизации

Для того, чтобы избежать падений и проблем с безопасностью, никогда не передавайте управление клиенту в synchronized блоке.

Где:

Но! Дурацкие примеры будут работать

ConcurrentModificationException Мы пытаемся удалить эл-т из списка, не закончив бежать по его эл-там

Deadlock: фоновый поток пытается залочить observers, в то время как основной ждет его завершения

К счастью, как правило, это довольно легко исправить. Или используя thread-safe CopyOnWriteArrayList, заплатив за это созданием копии массива при каждой операции изменения

Нет synchronized блоков – и эта реализация thread-safe Как правило справедливо следующее: делайте как можно меньше операций внутри synchronized блока

String StringBuffer StringBuilder Ужас Лучше, но все операции синхронизированы Все очень быстро и не синхронизировано Всегда следует синхронизировать изменение static величин Как правило нет нужды делать ваш класс thread-safe, и работающим даже в условиях ядерной зимы. Но есть необходимость документировать это!