Sobes.tech
Junior — Middle

Ինչ մեթոդներ կարող են ապահովել անվտանգ մուտք դեպի օբյեկտ կամ նրա դաշտը միաժամանակ մի քանի հոսքերից?

sobes.tech AI

Պատասխան AI-ից

Java-յում տարբեր մեթոդներ են օգտագործվում՝ ապահովելու համար անվտանգ մուտք դեպի օբյեկտ կամ նրա դաշտը մի քանի թելերից՝

  • synchronized բանալի բառը — թույլ է տալիս սինխրոնիզացնել մեթոդները կամ կոդի բլոկները, որպեսզի միայն մեկ թել կարողանա դրանք կատարել միաժամանակ:

  • java.util.concurrent փաթեթի դասերը, օրինակ՝ ReentrantLock — ավելի ճկուն լոկի մեխանիզմ:

  • Volatile դաշտեր — երաշխավորում փոփոխությունների տեսանելիությունը փոփոխության ժամանակ, բայց չի ապահովում բարդ գործողությունների ատոմականությունը:

  • Ատոմիկ դասեր (AtomicInteger, AtomicReference և այլն) — ապահովում են ատոմիկ գործողություններ առանց լոկների:

  • Անփոփոխ օբյեկտներ — եթե օբյեկտը անփոփոխ է, այն անվտանգ է մի քանի թելերից մուտք գործելու համար առանց սինխրոնիզացիայի:

Նմուշ synchronized-ով:

public class Counter {
    private int count = 0;

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

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

Այս մոտեցումը երաշխավորում է, որ count-ի վրա գործողությունները կլինեն ատոմիկ և թելային անվտանգ։