Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 14222|Odpowiedź: 0

[Komunikacja] Informacje o podstawowych typach bezpieczeństwa wątków Java i I++

[Skopiuj link]
Opublikowano 05.04.2015 22:17:45 | | |

W Javie pozostałe podstawowe zmienne są atomowe, z wyjątkiem 8-bajtowych, 64-bitowych zmiennych Long i Double.


Model pamięci Java wymaga, aby zarówno operacje get, jak i store były atomowe, ale dla nieulotnych zmiennych długich i podwójnych JVM pozwala na podzielenie 64-bitowego odczytu lub zapisu na dwie operacje 32-bitowe.

Jeśli odbywają się odgłosy odczytu i zapisu na różnych wątkach, odczyt długiego typu nieulotnego może skutkować wysoką liczbą 32 bitów jednej wartości i niskimi 32 bitami drugiej.

Więc nawet jeśli nie zależy Ci na wygasłych danych, może nie być bezpieczne używać współdzielonych, zmiennych długich i podwójnych w programie wielowątkowym, chyba że zostaną uznane za zmienne lub chronione blokadą.


Mówiąc o operacjach atomowych, oznacza to, że czytanie i zapisywanie są atomowe, na przykład i=5; To operacja atomowa.

Jednak jeśli działanie dwóch atomów odbywa się razem, niekoniecznie jest to atomowe, na przykład najpierw odczyt, a potem zapis, to możliwe, że zmienna została zmodyfikowana po odczytaniu.

i++ jest taką operacją, najpierw odczyta, a następnie zapisu, więc zmienna całkowita jest atomowa, a nie że i++ jest operacją atomową.

Gdy używasz for(int i=0; i<10000; i++){System.out.print(i)}

Zobaczysz, że ostatecznie nie wydrukuję 10 000, a wydrukuję około 8-9 tysięcy.


Ale w przypadku wielowątkowania, nawet jeśli zmienna całkowita jest atomowa, mogą wystąpić problemy z bezpieczeństwem wątków, co jest problemem widoczności wątków, więc trzeba dodać polecenie lotności.

Ten modyfikator jest wymuszoną zmienną, która jest odczytywana z pamięci za każdym razem i nie jest przechowywana w rejestrach.




Poprzedni:SQL 2008 wyświetla komunikat o błędzie (dostawca: SQL Network Interfaces, błąd: 25 - Słowo połączenia).
Następny:[Szybcy i wściekli 7] debiutuje na DVD 2.12G Najczystsza wersja w Internecie
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com