to program, który jest obdarzony wieloma funkcjami. W tym artykule zajmiemy się jedną z takich funkcji, którą jest słowo kluczowe volatile w Javie. Poniższe wskazówki zostaną omówione w tym artykule,
Przechodząc dalej do tego artykułu o Volatile Keyword w Javie.
Słowo kluczowe volatile jest używane do modyfikowania wartości zmiennej przez różne wątki. Jest również używany do zapewnienia bezpieczeństwa wątków klas. Oznacza to, że wiele wątków może bez problemu korzystać z metody i instancji klas jednocześnie. Słowo kluczowe volatile może być używane z typami pierwotnymi lub obiektami.
Final ostatecznie i sfinalizowanie w java
Przykład
klasa Test {static int var = 5}
W powyższym przykładzie załóżmy, że dwa wątki pracują na tej samej klasie. Oba wątki działają na różnych procesorach, gdzie każdy wątek ma swoją lokalną kopię var. Jeśli jakikolwiek wątek zmieni swoją wartość, zmiana nie zostanie odzwierciedlona w oryginalnym wątku w pamięci głównej. Prowadzi to do niespójności danych, ponieważ drugi wątek nie jest świadomy zmodyfikowanej wartości.
class Test {static volatile int var = 5}
W powyższym przykładzie zmienne statyczne są składowymi klas, które są wspólne dla wszystkich obiektów. W pamięci głównej jest tylko jedna kopia. Wartość zmiennej ulotnej nigdy nie zostanie zapisana w pamięci podręcznej. Wszystkie operacje odczytu i zapisu będą wykonywane z i do pamięci głównej.
Przechodząc dalej do tego artykułu o Volatile Keyword w Javie.
to vs ma java
Różnica między synchronizacją a słowem kluczowym volatile
Słowo kluczowe Volatile nie zastępuje słowa kluczowego synchronizowanego, ale w niektórych przypadkach może być używane jako alternatywa. Istnieją następujące różnice:
Zmienne słowo kluczowe | Słowo kluczowe synchronizacji |
Słowo kluczowe Volatile to modyfikator pola. | Synchronized słowo kluczowe modyfikuje bloki kodu i metody. |
Wątek nie może zostać zablokowany na oczekiwanie w przypadku niestabilności. | Wątki mogą być blokowane do oczekiwania w przypadku synchronizacji. |
Poprawia wydajność wątku. | Zsynchronizowane metody obniżają wydajność wątku. |
Synchronizuje jednocześnie wartość jednej zmiennej między pamięcią wątku a pamięcią główną. | Synchronizuje wartości wszystkich zmiennych między pamięcią wątków a pamięcią główną. |
Zmienne zmienne nie podlegają optymalizacji kompilatora. | Synchronizacja podlega optymalizacji kompilatora. |
Przechodząc dalej do tego artykułu o Volatile Keyword w Javie.
Przykład:
użycie charat w java
public class VolatileTest {private static final Logger LOGGER = MyLoggerFactory.getSimplestLogger () private static volatile int MY_INT = 0 public static void main (String [] args) {new ChangeListener (). start () new ChangeMaker (). start ()} klasa statyczna ChangeListener rozszerza Thread {@Override public void run () {int local_value = MY_INT while (local_value<5){ if( local_value!= MY_INT){ LOGGER.log(Level.INFO,'Got Change for MY_INT : {0}', MY_INT) local_value= MY_INT } } } } static class ChangeMaker extends Thread{ @Override public void run() { int local_value = MY_INT while (MY_INT <5){ LOGGER.log(Level.INFO, 'Incrementing MY_INT to {0}', local_value+1) MY_INT = ++local_value try { Thread.sleep(500) } catch (InterruptedException e) { e.printStackTrace() } } } } }
W ten sposób doszliśmy do końca artykułu o „Volatile Keyword in Java”. Jeśli chcesz dowiedzieć się więcej, zajrzyj do szkolenia Java firmy Edureka, zaufanej firmy zajmującej się nauką online. Edureka's Kurs ma na celu przeszkolenie zarówno podstawowych, jak i zaawansowanych koncepcji Java, a także różnych frameworków Java, takich jak Hibernate i Spring.
Masz do nas pytanie? Wspomnij o tym w sekcji komentarzy na tym blogu, a my skontaktujemy się z Tobą tak szybko, jak to możliwe.