Sobes.tech
Назад к вопросам
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. В итоге возникает взаимная блокировка.