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) მიღებას, რაც უზრუნველყოფს მისი მდგომარეობის უსაფრთხო წვდომას.