Sobes.tech
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ту алдын алуу үчүн, блокдорду алуу тартибин сактоо жана ресурстарды кармоо убактысын кыскартуу маанилүү.