Junior — Middle
Мо метавонед мисоли воқеии воқеии дар бораи ҳолате, ки дар он монеаи мутақобил дар систем ё дар зиндагӣ рух додааст, диҳед?
sobes.tech AI
Ҷавоб аз AI
Маъзул блокировка (deadlock) — бу ҳолат, икки ёки ундан кўп процеслар (ёки тўртинчлар) бошқа бирларининг эгаллаб турган ресурсларини озод қилишини кутмоқда, ва ҳеч бири ишни давом эттиришга имкониятга эга эмас.
Ҳақиқий ҳаётдан мисол: икки киши узунлиги кичик бўлган коридорда қарши келмоқда, ва ҳар бири бошқасининг йўл беришини кутмоқда, аммо ҳеч бири орqага қайтишни истамоқда эмас. Натижада, улар иккала ҳам ўрнида қолиб, ўтиб ўта олмайдилар.
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 икки ресурсни ҳам олди");
}
}
});
Thread thread2 = new Thread(() -> {
synchronized (resourceB) {
try { Thread.sleep(100); } catch (InterruptedException e) {}
synchronized (resourceA) {
System.out.println("Thread 2 икки ресурсни ҳам олди");
}
}
});
thread1.start();
thread2.start();
Бу ерда, thread1 resourceA ни эгаллайди ва resourceB ни кутмоқда, ва thread2 resourceB ни эгаллайди ва resourceA ни кутмоқда. Бу ўзаро блокланишга олиб келади.