Назад к вопросам
Билайн
Junior — Middle
94
Можете привести реальный пример ситуации, когда происходила взаимная блокировка ресурсов в системе или жизни?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Взаимная блокировка (deadlock) — ситуация, когда два или более процесса (или потока) ждут освобождения ресурсов, занятых друг другом, и ни один из них не может продолжить работу.
Реальный пример из жизни: два человека идут по узкому коридору навстречу друг другу, и каждый уступает дорогу другому, ни один не хочет отступать. В итоге они оба стоят на месте и не могут пройти.
Пример в программировании на Java:
Object resourceA = new Object();
Object resourceB = new Object();
Thread thread1 = new Thread(() -> {
synchronized (resourceA) {
try { Thread.sleep(100); } catch (InterruptedException e) {}
synchronized (resourceB) {
System.out.println("Thread 1 acquired both resources");
}
}
});
Thread thread2 = new Thread(() -> {
synchronized (resourceB) {
try { Thread.sleep(100); } catch (InterruptedException e) {}
synchronized (resourceA) {
System.out.println("Thread 2 acquired both resources");
}
}
});
thread1.start();
thread2.start();
Здесь thread1 захватывает resourceA и ждёт resourceB, а thread2 наоборот — resourceB и ждёт resourceA. В итоге возникает взаимная блокировка.