è una programmazione che è benedetta da molte funzionalità. In questo articolo esploreremo una di queste funzionalità che è la parola chiave volatile in Java. I seguenti suggerimenti saranno trattati in questo articolo,
analizzare un file xml in java
Andando avanti con questo articolo sulle parole chiave volatili in Java.
Una parola chiave volatile viene utilizzata per modificare il valore di una variabile da diversi thread. Viene anche utilizzato per rendere le classi thread-safe. Significa che più thread possono utilizzare un metodo e un'istanza delle classi contemporaneamente senza alcun problema. La parola chiave volatile può essere utilizzata sia con il tipo primitivo che con gli oggetti.
Esempio
classe Test {static int var = 5}
Nell'esempio precedente, supponi che due thread stiano lavorando sulla stessa classe. Entrambi i thread vengono eseguiti su processori diversi in cui ogni thread ha la propria copia locale di var. Se un thread modifica il suo valore, la modifica non si rifletterà in quella originale nella memoria principale. Porta a un'incoerenza dei dati perché l'altro thread non è a conoscenza del valore modificato.
classe Test {static volatile int var = 5}
Nell'esempio precedente, le variabili statiche sono membri della classe condivisi tra tutti gli oggetti. C'è solo una copia nella memoria principale. Il valore di una variabile volatile non verrà mai memorizzato nella cache. Tutte le operazioni di lettura e scrittura verranno eseguite da e verso la memoria principale.
Andando avanti con questo articolo sulle parole chiave volatili in Java.
Differenza tra sincronizzazione e parola chiave volatile
La parola chiave volatile non sostituisce la parola chiave sincronizzata, ma in alcuni casi può essere utilizzata come alternativa. Ci sono le seguenti differenze:
Parola chiave volatile | Parola chiave di sincronizzazione |
La parola chiave volatile è un modificatore di campo. | La parola chiave sincronizzata modifica i blocchi di codice e i metodi. |
Il thread non può essere bloccato in attesa in caso di volatile. | I thread possono essere bloccati in attesa in caso di sincronizzazione. |
Migliora le prestazioni del thread. | I metodi sincronizzati riducono le prestazioni del thread. |
Sincronizza il valore di una variabile alla volta tra la memoria del thread e la memoria principale. | Sincronizza il valore di tutte le variabili tra la memoria del thread e la memoria principale. |
I campi volatili non sono soggetti all'ottimizzazione del compilatore. | La sincronizzazione è soggetta all'ottimizzazione del compilatore. |
Andando avanti con questo articolo sulle parole chiave volatili in Java.
c ++ ricorsione di fibonacci
Esempio:
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 ()} la classe statica ChangeListener estende il 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() } } } } }
Così siamo giunti alla fine di questo articolo su 'Parola chiave volatile in Java'. Se desideri saperne di più, dai un'occhiata al Java Training di Edureka, una società di formazione online affidabile. Edureka's Il corso è progettato per formarti sia sui concetti di base che avanzati su Java insieme a vari framework Java come Hibernate e Spring.
burattino vs chef vs jenkins
Hai domande per noi? Per favore, menzionalo nella sezione commenti di questo blog e ti risponderemo il prima possibile.