Adnotacje dla klas, pól i metod, które pozwalją wskazać strategie bezpieczeństwa wątkowego.

Trzy adnotacje poziomu klasy opisują zamierzone bezpieczeństwo wątkowe klas: @Immutable, @ThreadSafe i @NotThreadSafe. @Immutable oznacza, że klasa jest niezmienna i jednocześnie oznacza też @ThreadSafe. @NotThreadSafe jest opcjonalne; jeśli klasa nie zawiera adnotacji o bezpieczeństwie wątkowym, powinna być traktowana jako niezabezpieczona, ale zawsze lepiej jawnie użyć adnotacji @NotThreadSafe.

Adnotacje są mało inwazyjne i mają na celu służyć jako oznaczenia dla użytkowników i konserwatorów. Użytkownicy od razu dowiadują się, że klasa jest bezpieczna wątkowo, a konserwatorzy wiedzą od razu, że muszą szczególnie uważać, by zachować bezpieczeństwo wątkwe. Adnotacje przydają się rownież automatycznym narzedziom. Narzędzia analizy statycznej mogą ich używać do sprawdzenia, czy kod rzeczywiście wywiązuje się z przyrzeczeń podanych w adnotacjach, na przykład czy rzeczywiście klasa oznaczona jako @Immutable jest niezmienna.

Adnotacje pól i metod

Adnotacje poziomu klasy stanowią publiczne powiadomienie o możliwościach klasy. Inne aspekty adnotacyjne kierowane są przede wszystkim do konserwatorów kodu i nie stanowią publicznej dokuentacji klasy.

Klasy używajace blokad powinny dokumentować, które zmienne stanu są chronione blokadami i jakie to są dokładnie blokady. Częstym źródłem niezamierzonej utraty bezpieczeństwa wątkowego jest niespójne stosowanie blokad, bo w późniejszym okresie dodano nowe zmienne stanu, któych nie chronią żądne blokady lub nowe metody stosują inne blokady niż powinny do ochrony tej samej zmiennej stanu. Dokumentowanie zmiennych stanu i blokad, któe je chronią pozwala uniknąć wspomnianych problemów

Adnotacja @GuardedBy(lock) wskazuje, że dane pole lub metoda powinno być chronione podaną w nawiasach blokadą.

Prawa autorskie i licencja

Copyright (c) 2005 Brian Goetz and Tim Peierls Udostępnione na licencji Creative Commons Attribution License (http://creativecommons.org/licenses/by/2.5) Oficjalna witryna: http://www.jcip.net Dowolna ponowna publikacja lub praca zależna dystrybuowana w postaci kodu źródłowego Musi zawierac powyższa informację o prawach autorskich i licencji.