Вопросы по многопоточной java
- Общие вопросы
- Отличие процесса ОС от потока (thread) ОС
- Как просмотреть список процессов ОС
- Как просмотреть список потоков ОС
- Понятие ядра процессора и потока процессора
- Понятие “гонки”
- Проблемы синхронизации процессов
- Порядок совершения действий
- Взаимная блокировка (deadlock и livelock)
- Ресурсный голод
- Алгоритм CAS (CompareAndSet) и инструкция процессора CMPXCHG
- Модель памяти JAVA
- Atomicity / атомарность - на некоторых платформах некоторые операции записи могут оказаться неатомарными.
- Visibility - Важно лишь то, при каких условиях один поток видит изменения, выполненные другим потоком
- Reordering - действия, выполненные одним потоком, другой поток увидит в другом порядке
- Happens-before:
- Освобождение (releasing) монитора happens-before заполучение (acquiring) того же самого монитора
- Запись в volatile переменную happens-before чтение из той же самой переменной
- Запись значения в final-поле
- Java
- запуск процесса
- остановка дочерних процессов
- запуск потока
- приоритет
- daemon
- флаг interrupted
- пул потоков
- группы потоков
- ключевое слово volatile, synchronized
- блокировки
- реетерабельность
- read/write lock
- stamped lock
- wait/notify
- Семафоры
- CountDownLatch
- atomic классы
- конкуретные коллекции
- ForkJoinPool
- CompletableFuture
- Event Dispatching Thread
- Java 8. Lambdas, Stream API, Parallel Streams
- Мониторинг
- мониторинг dead lock
- thread contention
Java code
- потокобезопасный шаблон singleton
- стратегии избегания deadlock
- Условия Коффмана
- Условие взаимного исключения - Каждый ресурс в данный момент или отдан ровно одному процессу, или доступен.
- Условие удержания и ожидания - Процессы, в данный момент удерживающие полученные ранее ресурсы, могут запрашивать новые ресурсы.
- Условие отсутствия принудительной выгрузки ресурса - У процесса нельзя принудительным образом забрать ранее полученные ресурсы..
- Условие циклического ожидания - Должна существовать круговая последовательность из двух и более процессов, каждый из которых ждет доступа к ресурсу.
- понятие иммутабельности
- обновление узла в иммутабельном дереве
- понятие чистой функции (детеменизм/-побочные эффекты)
- кэширование
- ивалидация кэша
- счетчик изменений
- триггер
- хэш результата
- ленивые исчисления
- транзакция
- Консистеность
- 2 фазная транзакция
- MVCC / Snapshot изоляция
- Транзакционная память
- Распределенность
- Алгоритм RAFT
- Распределенные блокировки