Встречается на собеседованиях • сегодня
Напиши код для гарантированного дедлока
java
public class DeadlockExample {
private static final Object lock1 = new Object();
private static final Object lock2 = new Object();
public static void main(String[] args) {
Thread thread1 = new Thread(() -> {
synchronized (lock1) {
try { Thread.sleep(100); }
catch (InterruptedException e) {}
synchronized (lock2) {
System.out.println("Thread 1");
}
}
});
text
Thread thread2 = new Thread(() -> {
synchronized (lock2) {
try { Thread.sleep(100); }
catch (InterruptedException e) {}
synchronized (lock1) {
System.out.println("Thread 2");
}
}
});
thread1.start();
thread2.start();
}}
text
Дедлок гарантирован, так как:
1. Потоки захватывают мониторы в разном порядке (lock1 → lock2 vs lock2 → lock1)
2. Задержка sleep() позволяет обоим потокам захватить первый монитор до попытки захвата второго
3. Каждый поток ждет освобождения монитора, удерживаемого другим потоком
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы