Junior — Middle
Жүйөлөрдө процесстердин өз ара бөгөлүштөрүнө туш болгон учурларыңыз болду беле?
sobes.tech AI
AIден жооп
Ооба, өз ара блокдоо (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ту алдын алуу үчүн, блокдорду алуу тартибин сактоо жана ресурстарды кармоо убактысын кыскартуу маанилүү.