Wewnętrzne Zamki i synchronizacja
Synchronizacja jest zbudowany wokół wewnętrznego jednostki zwanej wewnętrznej blokady lub monitora blokady. (Specyfikacja API często odnosi się do tego bytu po prostu jako "monitor".) Wewnętrzne blokady odgrywają rolę w obu aspektach synchronizacji: wymuszając wyłączny dostęp do stanu obiektu i ustanawiając zachodzące relacje, które są istotne dla widoczności.
Każdy obiekt ma przypisaną wewnętrzną blokadę. Zgodnie z konwencją wątek wymagający wyłącznego i spójnego dostępu do pól obiektu musi uzyskać wewnętrzną blokadę obiektu przed uzyskaniem do niego dostępu, a następnie zwolnić wewnętrzną blokadę, gdy zostanie ona wykonana. Mówi się, że wątek jest właścicielem wewnętrznej blokady między czasem uzyskania zamka a zwolnieniem blokady. Tak długo, jak wątek jest powiązany z wewnętrzną blokadą, żaden inny wątek nie może uzyskać tej samej blokady. Drugi wątek blokuje się, gdy próbuje zdobyć blokadę.
Gdy wątek zwalnia blokadę wewnętrzną, pomiędzy tymi czynnościami a późniejszym przejęciem tej samej blokady zostaje nawiązana relacja pomiędzy zdarzeniami.
Zamki synchronicznych Metod
Kiedy wątek wywołuje zsynchronizowany sposób, automatycznie nabywa wewnętrzną blokadę na obiekcie i uwalnia go, gdy powróci metoda ta metoda jest. Zwolnienie blokady występuje nawet wtedy, gdy powrót został spowodowany niezatłoczonym wyjątkiem.
Można się zastanawiać, co się dzieje, gdy wywoływana jest statyczna metoda synchronizowana, ponieważ metoda statyczna jest powiązana z klasą, a nie z obiektem. W takim przypadku wątek nabywa wewnętrzną blokadę dla obiektu klasy powiązanego z klasą. Zatem dostęp do pól statycznych klasy jest kontrolowany przez blokadę, która różni się od blokady dla dowolnego wystąpienia klasy.
czy próbowałeś google? –