Sobes.tech
Middle

Ի՞նչ է Singleton դիզայնի նմուշը երկու անգամ ստուգելու հետ:

sobes.tech AI

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

Singleton մոդելը երաշխավորում է, որ միայն մեկ օրինակ կստեղծվի դասից և տրամադրում է գլոբալ մուտքի կետ դրա համար: Double-Checked Locking (Երկակի ստուգումով սեղմում) օպտիմիզացիա է Lazy-սկզբնավորման համար շատ-թելային միջավայրում:

public class Singleton {

    private static volatile Singleton instance; // 'volatile' երաշխավորում է փոփոխությունների տեսանելիությունը բոլոր թելերում

    private Singleton() {
        // Պատմական կոնստրուկտոր՝ կանխելու համար ուղիղ օրինակների ստեղծումը
    }

    public static Singleton getInstance() {
        if (instance == null) { // Առաջին ստուգում՝ անհրաժեշտ չէ սինխրոնիզացիա, եթե օբյեկտը արդեն ստեղծված է
            synchronized (Singleton.class) { // Սինխրոնիզացիայի բլոկ
                if (instance == null) { // Երկրորդ ստուգում՝ կանխելու համար մի քանի օրինակների ստեղծումը, եթե մի քանի թել անցնում է առաջին ստուգումը
                    instance = new Singleton(); // Օբյեկտի սկզբնավորումը
                }
            }
        }
        return instance;
    }
}