Потоки 😕 база
Что такое поток простыми словами?
Отдельная «дорожка» выполнения внутри программы; потоки идут параллельно и делят общую память.
Потоки 😕 база
Зачем нужны несколько потоков?
Чтобы делать несколько дел одновременно — например, не «замораживать» интерфейс во время долгой загрузки.
Потоки 🤓 уверенно
Чем метод run() отличается от start()?
start() запускает новый поток и в нём вызывает run(). Прямой вызов run() выполнит код в текущем потоке, без параллелизма.
Потоки 🤓 уверенно
В чём разница между конкурентностью и параллелизмом?
Конкурентность — задачи чередуются (даже на одном ядре); параллелизм — реально выполняются одновременно на разных ядрах.
Потоки 🧐 глубоко
Что такое deadlock и как его избежать?
Потоки 🧐 глубоко
Плюсы и минусы ExecutorService по сравнению с ручными потоками?
Потоки 😎 про
Чем ForkJoinPool отличается от обычного пула потоков?
Потоки 😎 про
Как дождаться завершения сразу нескольких потоков?
Синхронизация и проблемы 😕 база
Какая главная опасность многопоточности?
Состояние гонки: два потока меняют общие данные одновременно, и результат становится непредсказуемым.
Синхронизация и проблемы 😕 база
Как в двух словах защитить общие данные?
Ограничить доступ так, чтобы в критическую секцию входил один поток за раз — например через synchronized.
Синхронизация и проблемы 🤓 уверенно
Что такое состояние гонки (race condition)?
Ситуация, когда итог зависит от порядка выполнения потоков над общими данными, из-за чего появляются ошибки.
Синхронизация и проблемы 🤓 уверенно
Как работает ключевое слово synchronized?
Берёт монитор объекта: пока один поток в синхронизированном блоке, другие ждут. Даёт взаимное исключение и видимость.
Синхронизация и проблемы 🧐 глубоко
Какие условия нужны для возникновения deadlock?
Синхронизация и проблемы 🧐 глубоко
Чем livelock отличается от deadlock?
Синхронизация и проблемы 😎 про
Чем ReentrantLock отличается от synchronized?
Синхронизация и проблемы 😎 про
Как реализовать потокобезопасный Singleton?
java.util.concurrent 😕 база
Зачем нужен пакет java.util.concurrent?
Готовые высокоуровневые инструменты для многопоточности: пулы потоков, потокобезопасные коллекции, атомики — чтобы не писать всё руками.
java.util.concurrent 😕 база
Что такое пул потоков простыми словами?
Набор переиспользуемых потоков, которым раздаёшь задачи, вместо создания нового потока на каждую.
java.util.concurrent 🤓 уверенно
Что такое ExecutorService?
Сервис для запуска задач в пуле потоков; принимает Runnable/Callable и управляет их выполнением.
java.util.concurrent 🤓 уверенно
Что такое атомарные классы (Atomic)?
Классы вроде AtomicInteger, которые делают операции атомарно без блокировок, на основе CAS.
java.util.concurrent 🧐 глубоко
Чем ConcurrentHashMap отличается от Hashtable?
java.util.concurrent 🧐 глубоко
Чем CountDownLatch отличается от CyclicBarrier?
java.util.concurrent 😎 про
Что такое ThreadLocal и где он полезен?
java.util.concurrent 😎 про
Как BlockingQueue помогает в паттерне producer-consumer?