1) Не очень понял вопрос, но посмотрите ConcurrentHashMap;
2) Синхронизаторы из j.u.c. -
https://habr.com/ru/post/277669/Хорошая книга по теме - JCIP, Java Concurrency In Practice. На практике использовал в основном как раз локи.
Сейчас в тренде более высокоуровневые модели конкуррентного/многопоточного программирования - акторы, реактивные системы, там эти низкоуровневые примитивы скрыты от разработчика.