Ինչպե՞ս է հոսքը ստանում օբյեկտի վերահսկողությունը և ինչպես է տեղի ունենում նրա բռնումը բազմա-թերթային միջավայրում։
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) ամրակը, ինչը ապահովում է նրա վիճակի անվտանգ մուտք՝ հոսքային անվտանգ։