java.util.concurrent и виртуальные потоки
Разбери инструменты Java для запуска задач и согласования работы потоков: исполнители, Future и CompletableFuture, атомарные операции, блокировки и конкурентные коллекции. Отдельная часть посвящена виртуальным потокам и их применению.
Вопросы
- Чем Runnable отличается от Callable?
- Что такое FutureTask?
- Что такое Фреймворк fork/join? Для чего он нужен?
- Какие группы классов есть в java.util.concurrent?
- Stream API & ForkJoinPool. Как связаны, что это такое.
- Какие бывают ExecutorService и почему фабрики Executors.* опасны?
- Параметры ThreadPoolExecutor и порядок обработки задачи
- Future, RunnableFuture, CompletableFuture — в чём разница?
- Как работают атомики и CAS на уровне процессора?
- ReentrantLock vs synchronized
- ReadWriteLock и StampedLock
- Какие синхронизаторы есть в java.util.concurrent?
- Как устроен ConcurrentHashMap (Java 8+)?
- CopyOnWriteArrayList и прочие конкурентные коллекции
- ThreadLocal: что это и в чём подвох в пулах потоков?
- Что такое виртуальные потоки и как они работают?
- Что такое pinning виртуальных потоков и когда они не помогают?
- spring.threads.virtual.enabled=true — что это делает?
- Виртуальные потоки vs реактивщина
- Что такое Structured Concurrency?