Junior — Middle
Sistemlərdə proseslərin qarşılıqlı bloklanması halları baş veribmi?
sobes.tech Süni İntellekt
AI-dan cavab
Bəli, qarşılıqlı bloklama (deadlock) — bu, iki və ya daha çox proses və ya iş parçacığının bir-birindən resursların sərbəst buraxılmasını sonsuz müddətə gözlədiyi vəziyyətdir.
Java-da bu, sinxronizasiyanın düzgün istifadə edilməməsi nəticəsində baş verə bilər, məsələn, iki iş parçacığının iki monitor obyektini fərqli ardıcıllıqla əldə etməyə çalışması zamanı.
Nümunə:
Object lock1 = new Object();
Object lock2 = new Object();
Thread t1 = new Thread(() -> {
synchronized(lock1) {
try { Thread.sleep(100); } catch (InterruptedException e) {}
synchronized(lock2) {
// iş
}
}
});
Thread t2 = new Thread(() -> {
synchronized(lock2) {
try { Thread.sleep(100); } catch (InterruptedException e) {}
synchronized(lock1) {
// iş
}
}
});
t1.start();
t2.start();
Deadlock-u qarşısını almaq üçün, kilidləri əldə etmə ardıcıllığını izləmək və resursların tutulma müddətini minimallaşdırmaq vacibdir.