Junior — Middle
Können Sie ein konkretes Beispiel für eine Situation nennen, in der es zu einer gegenseitigen Blockierung von Ressourcen im System oder im Leben kam?
sobes.tech KI
Antwort von 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. В итоге возникает взаимная блокировка.