Многопоточность

Java Concurrency. Популярные вопросы с интервью и примеры задач о многопоточности в Java. Классы пакета java.util.concurrent. Реализация и примеры применения примитивов синхронизации. Внутреннее устройство multithreading коллекций. Параллельное программирование с применением synchronized, notify/wait, volatile. Вопросы про класс Thread и использующие его инструменты многопоточности.
wait, notify, notifyAll
Что такое synchronized?
Что делает volatile?
Какими коллекциями пользоваться в многопоточной среде?
Как в лямбде изменить внешнюю локальную переменную?
Как получить гарантированный дедлок?
Как устроены атомики?
Что такое и как создать daemon thread?
Зачем используются thread local переменные?
Как выполнить две задачи параллельно?
Что происходит если не обработать исключение?
Чем отличается блокирующее чтение от неблокирующего?
Как реализовать паттерн producer/consumer?
Из чего состоит пакет java.nio?
Что такое ForkJoinPool?
Чем ForkJoinPool отличается от ExecutorService?
Как работают параллельные стримы?
Чем CompletableFuture отличается от Future?
Зачем выбирать ReentrantLock вместо synchronized?
Как используется метод Lock.newCondition()?
Чем отличается ReentrantLock от обычного Lock?
Что делает семафор?
Как использовать ReadWriteLock?
Когда используется StampedLock?
Чем отличается CountDownLatch от CyclicBarrier?
Как остановить поток?
Приведите примеры использования fork/join framework
Как реализовать двусторонний обмен данными между потоками?