Карта / Многопоточность / java.util.concurrent

java.util.concurrent

synchronized и ручная работа с Thread — это низкоуровневые инструменты. Пакет java.util.concurrent даёт готовые, проверенные решения поверх них, чтобы не писать многопоточность «с нуля» каждый раз:

  • ExecutorService — пулы потоков (подробнее в следующей подтеме);
  • AtomicInteger / AtomicLong — атомарные счётчики без synchronized (через CAS);
  • ConcurrentHashMap — потокобезопасная map без блокировки всей коллекции целиком;
  • CountDownLatch, CompletableFuture — координация между потоками (дождаться, скомбинировать результаты).
Map<String, Integer> map = new ConcurrentHashMap<>();   // безопасно из нескольких потоков

Правило по умолчанию: если задача стандартная (пул потоков, счётчик, безопасная коллекция) — бери готовое из java.util.concurrent, а не пиши свой synchronized вручную.

🎤 Закрыл тему, если можешь объяснить:
• зачем нужен пакет `java.util.concurrent` и что в нём есть готового.