Cum se implementează un cuvânt cheie volatil în Java?



Java este o programare care este binecuvântată cu o mulțime de caracteristici. În acest articol vom explora o astfel de caracteristică, care este un cuvânt cheie volatil în Java.

este o programare care este binecuvântată cu o mulțime de caracteristici. În acest articol vom explora o astfel de caracteristică, care este un cuvânt cheie volatil în Java. Următoarele indicații vor fi tratate în acest articol,

Continuăm cu acest articol despre Cuvânt cheie volatil în Java.





Un cuvânt cheie volatil este utilizat pentru a modifica valoarea unei variabile prin diferite fire. De asemenea, este folosit pentru a face clasele sigure la fir. Înseamnă că mai multe fire pot utiliza o metodă și o instanță a claselor în același timp, fără nicio problemă. Cuvântul cheie volatil poate fi utilizat fie cu tip primitiv, fie cu obiecte.

Exemplu

test de clasă {static int var = 5}

În exemplul de mai sus, presupuneți că două fire funcționează pe aceeași clasă. Ambele fire rulează pe procesoare diferite în care fiecare fir are copia locală a var. Dacă vreun fir își modifică valoarea, modificarea nu se va reflecta în cea originală din memoria principală. Aceasta duce la neconcordanță a datelor, deoarece celălalt fir nu este conștient de valoarea modificată.



clasă Test {static volatile int var = 5}

În exemplul de mai sus, variabilele statice sunt membrii clasei care sunt partajate între toate obiectele. Există o singură copie în memoria principală. Valoarea unei variabile volatile nu va fi stocată niciodată în cache. Toate citirile și scrierile se vor face din și către memoria principală.

Continuăm cu acest articol despre Cuvânt cheie volatil în Java.

Diferența dintre sincronizare și cuvânt cheie volatil

Cuvântul cheie volatil nu este un substitut al cuvântului cheie sincronizat, dar poate fi utilizat ca alternativă în anumite cazuri. Există următoarele diferențe:



Cuvânt cheie volatil Cuvânt cheie de sincronizare
Cuvântul cheie volatil este un modificator de câmp.Cuvântul cheie sincronizat modifică blocurile de cod și metodele.
Firul nu poate fi blocat pentru așteptare în caz de volatilitate.Firele pot fi blocate pentru așteptare în caz de sincronizare.
Îmbunătățește performanța firului.Metodele sincronizate degradează performanța firului.
Sincronizează valoarea unei variabile la un moment dat între memoria firului și memoria principală.Sincronizează valoarea tuturor variabilelor între memoria firului și memoria principală.
Câmpurile volatile nu sunt supuse optimizării compilatorului.Sincronizarea este supusă optimizării compilatorului.

Continuăm cu acest articol despre Cuvânt cheie volatil în Java.

Exemplu:

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 ()} clasa statică ChangeListener extinde firul {@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() } } } } } 

Image- Volatile-Edureka

conversie tip în c ++

Astfel am ajuns la sfârșitul acestui articol despre „Cuvânt cheie volatil în Java”. Dacă doriți să aflați mai multe, consultați Java Training de la Edureka, o companie de învățare online de încredere. Edureka’s cursul este conceput pentru a vă instrui atât pentru conceptele Java de bază, cât și pentru cele avansate împreună cu diverse cadre Java, cum ar fi Hibernate & Spring.

Ai o întrebare pentru noi? Vă rugăm să o menționați în secțiunea de comentarii a acestui blog și vă vom răspunde cât mai curând posibil.