Найти в Дзене
Java

⚠️ Главное правило многопоточности в Java

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

⚠️ Главное правило многопоточности в Java:

не делитесь состоянием между потоками.

Большинство багов в concurrency появляются из-за одного —

несколько потоков одновременно изменяют одни и те же данные.

Как избежать проблем?

1. Используйте неизменяемые объекты (Immutable)

Если объект нельзя изменить —

его безопасно читать из любого количества потоков.

Пример:

- record в Java - идеальный immutable-тип

- поля final

- никакой синхронизации не нужно

2. Общайтесь через сообщения, а не через общее состояние

Вместо:

- менять общие переменные

Делайте так:

- один поток отправляет данные в очередь

- другой поток их получает

Например:

- BlockingQueue

- put() → отправка

- take() → получение

Плюсы подхода:

- Нет гонок данных (race conditions)

- Нет сложных synchronized

- Нет дедлоков

- Код проще и стабильнее

Золотое правило concurrency:

**Shared state — это проблема.

Message passing + immutability — это решение.**

#Java #Concurrency