Zpo-5-wyk-Slajd15

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania

Singleton: implementacja 2PL

Singleton: implementacja 2PL


W języku Java implementacja tego wzorca napotyka na wiele trudności ze względu na sposób wykonywania programów i konstrukcję maszyny wirtualnej, w której są uruchamiane programy. M.in. w programie wielowątkowym istnieje możliwość, że wskutek przerwania wykonywania metody w momencie sprawdzania, czy instancja obiektu została już utworzona, kontrolę przejmie drugi wątek, który utworzy swoją własną instancję.

W celu rozwiązania tego problemu można zastosować zmodyfikowaną wersję algorytmu blokowania dwufazowego (2PL). Zakłada ona, że istnienie instancji obiektu jest sprawdzane dwukrotnie: na zewnątrz i wewnątrz bloku synchronizacji, w którym instancja ta jest tworzona. Taka konstrukcja, mimo pewnego narzutu związanego z synchronizacją wątków, pozwala uniknąć utworzenia wielu instancji klasy.


<< Poprzedni slajd | Spis treści | Następny slajd >>