/ / Unikalne dane wątku - java, wielowątkowość, bezpieczeństwo wątków

Unikalne dane dotyczące wątków - java, wielowątkowość, bezpieczeństwo wątków

Muszę zachować skrót, który powinien byćpubliczny dla wszystkich wykonywanych wątków. Na przykład skrót mapy zaktualizowany przez jeden konkretny wątek powinien być również dostępny dla innych wątków i odwrotnie. Proszę zasugerować mi implementację w Javie.

Główny program zawiera skrót. Z tego głównego wątku będę wyzwalał wiele wątków. Każdy wątek powinien mieć dostęp do tego samego skrótu dostępnego w programie głównym.

Z góry dziękuję.

Odpowiedzi:

1 dla odpowiedzi № 1

poszukaj tutaj wszystkich bezpiecznych dla wątku struktur danych ... http://download.oracle.com/javase/6/docs/api/java/util/concurrent/package-summary.html

myślę, że potrzebujesz współbieżnej mapy skrótów. Jeśli możesz zmienić mapę na listę, możesz użyć CopyOnWriteArrayList, który pozwala na bardzo skuteczny i bezpieczny sposób czytania zapisu na liście.


1 dla odpowiedzi nr 2

Problemem w Javie jest brak udostępniania zmiennychpomiędzy wieloma wątkami: możesz to zrobić po prostu przekazując odwołanie do obiektu do wątku. Pamiętaj, że musisz mieć do niego bezpieczny dostęp ... Jednoczesna modyfikacja może być problematyczna. Sugeruję sprawdzenie samouczka współbieżności Java, jest to bardzo dobry punkt wyjścia: http://download.oracle.com/javase/tutorial/essential/concurrency/index.html


0 dla odpowiedzi № 3

Nie rób tego statycznym - w ten sposób występują problemy z współbieżnością i sprawia, że ​​Twój kod jest mniej testowalny. Zamiast tego użyj współbieżnej mapy skrótów:

http://download.oracle.com/javase/1,5.0/docs/api/java/util/concurrent/ConcurrentHashMap.html

I przekaż mu odniesienie do każdego wątku, który tego potrzebuje.


0 dla odpowiedzi nr 4

Hashmapa może być statyczna i może byćdostępne w wątkach za pomocą ClassName. Myślę, że jest to jedno rozwiązanie, ale współbieżność może stanowić problem. Spodziewam się innego dobrego rozwiązania tego problemu.