Próbuję zastosować lekcje z czytania Java Concurrency In Practice w odniesieniu do deklarowania, czy klasy, które piszę, są albo bezpieczne dla wątków, albo zawierają niezsynchronizowany stan zmienny. Myślę, że to dobry pomysł, ponieważ dokumentuje zamiar wykorzystania klasy.Czy istnieje lista klas bezpiecznych dla wątków w języku Java?
Dzisiaj napisałem klasę, która opakowuje instancję java.lang.Class i java.net.URI. Miałem właśnie napisać w javadocie, że jest niezmienny, ponieważ oba pola zostały zadeklarowane jako końcowe odniesienia. Jednak przyjrzałem się kodowi źródłowemu URI i klasy i nie widziałem deklaracji, czy są bezpieczne dla wątków, i nie wydawało się to od razu oczywiste.
Myślenie o tym bardziej ogólnie: czy istnieje lista typowych klas java określających, czy są one bezpieczne dla wątków czy nie?
Z drugiej strony, prawdopodobnie nie ma znaczenia, czy przypadki są ściśle wątkowe ze względu na sposób, w jaki ta klasa jest używana, oznaczę to jako "prawdopodobnie wątek bezpieczny" na teraz.
Istnieje kilka znanych klas gwint-niebezpieczne, takie jak SimpleDateFormat na przykład, ale nie sądzę, istnieje wyczerpująca, oficjalna lista. Więc jeśli klasa nie jest udokumentowana jako bezpieczna lub możesz udowodnić z przekonaniem, że jest i pozostanie * bezpieczna w przewidywalnej przyszłości, prawdopodobnie powinieneś pomyśleć o ostrożnej stronie ... – assylias