Devoxx Belgium 2026 только закончилась:
https://youtube.com/playlist?list=PLKlmOVksNGoE&si=_BvX8q8qFK4hR4ig
https://youtube.com/playlist?list=PLKlmOVksNGoE&si=_BvX8q8qFK4hR4ig
🔥3
Что произойдет, если поток вызовет `tryLock()`, а замок уже занят другим потоком?
Anonymous Quiz
42%
Поток будет ждать (заблокируется), пока замок не освободится.
42%
Поток сразу напечатает "Busy" и пойдет дальше.
11%
Выбросится IllegalMonitorStateException.
5%
Произойдет Deadlock.
🔥3
Что произойдет, если поток вызовет
tryLock(), а замок уже занят другим потоком?ReentrantLock lock = new ReentrantLock();
// ... где-то в другом потоке lock.lock() ...
if (lock.tryLock()) {
try { /* работа */ }
finally { lock.unlock(); }
} else {
System.out.print("Busy");
}
🤯4❤1
🔍 Ответ на задачу про ReentrantLock: Попытка не пытка 🚪
Метод
Вывод:
Поток напечатает "Busy" и не будет блокироваться.
⚡️ Не перепутайте:
При использовании
#java #concurrency #multithreading #reentrantlock #интервью #java_interview_tasks
Метод
tryLock() — неблокирующий. Он мгновенно возвращает true, если замок удалось захватить, и false, если нет. Это позволяет потоку избежать ожидания и заняться чем-то другим или реализовать свою логику повторных попыток.Вывод:
Поток напечатает "Busy" и не будет блокироваться.
⚡️ Не перепутайте:
При использовании
lock() всегда вызывайте unlock() в блоке finally. Со synchronized об этом заботится сама JVM.#java #concurrency #multithreading #reentrantlock #интервью #java_interview_tasks
🔥4👍1🤨1
🤨6
Что выведет этот код?
Semaphore sem = new Semaphore(0);
sem.release();
sem.release();
System.out.println(sem.availablePermits());
🥴5
🔍 Ответ на задачу про Semaphore: Кто потерял ключи? 🔑
В отличие от многих других синхронизаторов,
Вывод:
Код напечатает 2. Это свойство часто используют для передачи сигналов между потоками: один поток ждет (
⚡️ Не перепутайте:
Если вам нужен строгий замок, где отдать ключ может только тот, кто его взял — используйте
#java #concurrency #semaphore #multithreading #интервью #java_interview_tasks
В отличие от многих других синхронизаторов,
Semaphore в Java — это просто счетчик. Метод release() просто увеличивает счетчик разрешений на единицу. Ему совершенно всё равно, вызывали ли вы acquire() до этого.Вывод:
Код напечатает 2. Это свойство часто используют для передачи сигналов между потоками: один поток ждет (
acquire), а другой подает сигнал о готовности (release).⚡️ Не перепутайте:
Если вам нужен строгий замок, где отдать ключ может только тот, кто его взял — используйте
ReentrantLock.#java #concurrency #semaphore #multithreading #интервью #java_interview_tasks
🔥3❤1👍1
Можно ли повторно использовать `CountDownLatch`, когда его счетчик достиг нуля?
Anonymous Quiz
23%
Да, вызвав метод `reset()`.
11%
Да, он автоматически сбрасывается.
54%
Нет, это "одноразовый" затвор.
13%
Только если создать его с флагом `isReusable=true`.
🔥1
🔍 Ответ на задачу про CountDownLatch vs CyclicBarrier: Одноразовый или нет? 🏁
-
-
Вывод:
⚡️ Не перепутайте:
- Нужен старт нескольких потоков одновременно?
- Нужно дождаться завершения инициализации чего-либо?
#java #concurrency #multithreading #latch #barrier #интервью #java_interview_tasks
-
CountDownLatch — одноразовый. Как только счетчик упал до нуля, все потоки проходят через await() свободно, и "взвести" его обратно нельзя.-
CyclicBarrier — многоразовый. После того как все потоки собрались в точке сбора, барьер сбрасывается и готов к следующему раунду (циклу). У него есть метод reset().Вывод:
CountDownLatch нельзя использовать повторно⚡️ Не перепутайте:
- Нужен старт нескольких потоков одновременно?
CyclicBarrier.- Нужно дождаться завершения инициализации чего-либо?
CountDownLatch.#java #concurrency #multithreading #latch #barrier #интервью #java_interview_tasks
❤3
Что произойдет, если положить большой объект в `ThreadLocal` и не вызвать `remove()` в приложении, работающем на Tomcat/Jetty?
Anonymous Quiz
18%
Объект будет удален сборщиком мусора, когда поток закончит обработку HTTP-запроса.
68%
Объект останется в памяти, так как потоки в веб-серверах живут в пуле и не умирают.
1%
ThreadLocal сам очистится через 5 минут простоя.
13%
JVM принудительно очищает ThreadLocal при каждой очистке Heap.
🔥2