Junior — Middle
Оё ҳолатеҳое буданд, ки шумо бо бастани мутақобилони равандҳо дар системаҳо рӯбарӯ шудаед?
sobes.tech AI
Ҷавоб аз AI
Бале, блокировка mutual (deadlock) — ин ҳолатест, ки дар он ду ё бештар аз раванд ё сӯрохҳо барои озод кардани захираҳо аз якдигар бенаҳз интизор мешаванд.
Дар Java, ин метавонад бо истифодаи нодуруст аз синхронӣ рӯй диҳад, масалан, вақте ки ду сӯрох кӯшиш мекунанд, ки ду объект мониторро дар тартиби гуногун ба даст оранд.
Масалан:
Object lock1 = new Object();
Object lock2 = new Object();
Thread t1 = new Thread(() -> {
synchronized(lock1) {
try { Thread.sleep(100); } catch (InterruptedException e) {}
synchronized(lock2) {
// кор
}
}
});
Thread t2 = new Thread(() -> {
synchronized(lock2) {
try { Thread.sleep(100); } catch (InterruptedException e) {}
synchronized(lock1) {
// кор
}
}
});
t1.start();
t2.start();
Барои пешгирии deadlock, муҳим аст, ки тартибро дар гирифтани блокҳоро риоя кунед ва вақти нигоҳ доштани захираҳоро кам кунед.