: не делитесь состоянием между потоками. Большинство багов в concurrency появляются из-за одного — несколько потоков одновременно изменяют одни и те же данные. Как избежать проблем? 1. Используйте неизменяемые объекты (Immutable) Если объект нельзя изменить — его безопасно читать из любого количества потоков. Пример: - record в Java - идеальный immutable-тип - поля final - никакой синхронизации не нужно 2. Общайтесь через сообщения, а не через общее состояние Вместо: - менять общие переменные Делайте так: - один поток отправляет данные в очередь - другой поток их получает Например: - BlockingQueue - put() → отправка - take() → получение Плюсы подхода: - Нет гонок данных (race conditions) - Нет сложных synchronized - Нет дедлоков - Код проще и стабильнее Золотое правило concurrency: **Shared state — это проблема. Message passing + immutability — это решение.** #Java #Concurrency