TGViewer
Dolgo.polo Dev | Денис Долгополов Dolgo.polo Dev | Денис Долгополов @dolgo_polo_dev · 2.18K subscribers
Post #89 5.07K
​​Многопоточность за 100 слов

Проблема:
есть объект
запускаем два потока
у каждого потока свой кэш, то есть каждый поток создает копию этого объекта, а не работает с ним напрямую

дальше по шагам:
1) первый поток скопировал объект к себе в кэш
2) первый поток изменил поле объекта
3) второй поток скопировал объект к себе в кэш
4) второй поток изменяет это же поле (и не знает об изменениях, сделанных первым потоком!)
5) второй поток записывает изменения в общую память
6) первый поток записывает изменения в общую память

бац — мы потеряли изменения, сделанные во втором потоке. первый поток их перезаписал + второй поток даже не знал, что объект был изменен в первом потоке!


Как этого избежать:

• synchronized — запрещает нескольким потокам работать с объектом (классом) одновременно

перед тем как выполнить участок кода, поток захватывает объект (класс), а другие потоки ждут освобождения объекта (класса)

- synchronized(Object) — захватывает объект
- synchronized fun — можно читать как synchronized(this), захватывает объект
- static synchronized fun — захватывает класс (а не объект)


• volatile — синхронизирует чтение и запись

сработает, если один поток только читает, а другой только пишет

не сработает, если оба потока изменяют объект — потому что операции между чтением и записью не синхронизированы


• atomic

атомарная операция = неделимая операция изменения объекта

с объектами, имеющими атомарные операции изменения (например, увеличение на единицу для AtomicInteger), можно работать в разных потоках без ручной синхронизации

в Java есть атомарные примитивы, коллекции и класс AtomicReference для работы с произвольными классами

....

а нужно ли думать о синхронизации переменной в корутинах?
сработают ли там эти подходы?
  • 🔥 26
  • 👍 17
  • ❤ 4
  • 🐳 1
More from @dolgo_polo_dev
  1. Jun 22, 2026Медиалента — то, что пользователь реально ощущает физически: скроллы, зумы, тапы. Любые ми…
  2. Jun 20, 2026👮‍♀️ Как VPN видит трафик всех приложений? технически VPN на андроид — это сервис внутри…
  3. Jun 13, 2026Дуров опять не старается 🍌🍌🍌 Пару месяцев назад команду телеграма ругали за то, что они…
  4. May 24, 2026🧬Может ли VPN ускорить интернет? Интуиция подсказывает — точно нет Добавляется лишний сер…
  5. May 22, 2026кто же знал, что основным выгодополучателем max 📲 окажется habr.com любая статья набирает…
  6. May 6, 2026вы снова не туда воюете сначала все пушили Compose типо верстать в 2 раза быстрее, можно с…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →