Junior — Middle
Siz tizimlarda jarayonlarning o'zaro bloklanishiga duch kelganmisiz?
sobes.tech AI
AIdan javob
Ha, o'zaro blokirovka (deadlock) — bu ikki yoki undan ortiq jarayon yoki iplar bir-biridan resurslarni bo'shatishni abadiy kutayotgan vaziyat.
Java'da bu, sinxronizatsiyaning noto'g'ri ishlatilishi natijasida yuzaga kelishi mumkin, masalan, ikki ip ikki ob'ekt monitorini turli tartibda olishga harakat qilganda.
Misol:
Object lock1 = new Object();
Object lock2 = new Object();
Thread t1 = new Thread(() -> {
synchronized(lock1) {
try { Thread.sleep(100); } catch (InterruptedException e) {}
synchronized(lock2) {
// ish
}
}
});
Thread t2 = new Thread(() -> {
synchronized(lock2) {
try { Thread.sleep(100); } catch (InterruptedException e) {}
synchronized(lock1) {
// ish
}
}
});
t1.start();
t2.start();
Deadlockdan qochish uchun, bloklarni olish tartibiga rioya qilish va resurslarni ushlab turish vaqtini minimallashtirish muhimdir.