Sobes.tech
Junior — Middle

Как потокът получава контрол върху обекта и как се осъществява неговото захващане в многонишкова среда?

sobes.tech AI

Отговор от AI

В многонишкова среда нишката получава контрол върху обект чрез механизми за синхронизация, които осигуряват изключителен достъп до ресурса. В Android (и в Java като цяло) за това се използват ключови думи и класове като synchronized, ReentrantLock и други.

Когато нишка иска да получи достъп до обект, тя се опитва да улови монитора (lock) на този обект. Ако монитора е свободен, нишката получава контрол и може да извършва операции с обекта. Ако мониторът е зает от друга нишка, текущата нишка се блокира и чака освобождаването му.

Пример с synchronized:

public class Counter {
    private int count = 0;

    public synchronized void increment() {
        count++;
    }

    public synchronized int getCount() {
        return count;
    }
}

Тук методите increment и getCount са синхронизирани, което гарантира, че само една нишка в даден момент може да изпълнява тези методи, предотвратявайки състезателни условия.

Така, захващането на обект означава получаване на монитора (lock) върху този обект, което осигурява потокобезопасен достъп до неговото състояние.