Sådan implementeres flygtigt nøgleord i Java?

Java er en programmering, der er velsignet med masser af funktioner. I denne artikel vil vi undersøge en sådan funktion, der er flygtigt nøgleord i Java.

er en programmering, der er velsignet med masser af funktioner. I denne artikel vil vi undersøge en sådan funktion, der er flygtigt nøgleord i Java. Følgende punkter vil blive dækket i denne artikel,



Fortsætter med denne artikel om flygtigt nøgleord i Java.



array sortering c ++

Et flygtigt nøgleord bruges til at ændre værdien af ​​en variabel ved forskellige tråde. Det bruges også til at gøre klasser trådsikre. Det betyder, at flere tråde kan bruge en metode og forekomst af klasserne på samme tid uden problemer. Det flygtige nøgleord kan bruges enten med primitiv type eller objekter.

Eksempel

klassetest {statisk int var = 5}

Antag i ovenstående eksempel, at to tråde arbejder på samme klasse. Begge tråde kører på forskellige processorer, hvor hver tråd har sin lokale kopi af var. Hvis en tråd ændrer dens værdi, afspejles ændringen ikke i den oprindelige i hovedhukommelsen. Det fører til dataoverskridelse, fordi den anden tråd ikke er opmærksom på den ændrede værdi.



klassetest {statisk flygtig int var = 5}

I ovenstående eksempel er statiske variabler klassemedlemmer, der deles mellem alle objekter. Der er kun én kopi i hovedhukommelsen. Værdien af ​​en ustabil variabel gemmes aldrig i cachen. Al læsning og skrivning sker fra og til hovedhukommelsen.

Fortsætter med denne artikel om flygtigt nøgleord i Java.

Forskel mellem synkronisering og flygtigt nøgleord

Flygtigt nøgleord er ikke en erstatning for synkroniseret nøgleord, men det kan i visse tilfælde bruges som et alternativ. Der er følgende forskelle:



Flygtigt nøgleord Synkroniseringsnøgleord
Flygtigt nøgleord er en feltmodifikator.Synkroniseret nøgleord ændrer kodeblokke og metoder.
Tråden kan ikke blokeres til ventetid i tilfælde af ustabil.Tråde kan blokeres til ventetid i tilfælde af synkronisering.
Det forbedrer trådydelsen.Synkroniserede metoder forringer trådens ydeevne.
Den synkroniserer værdien af ​​en variabel ad gangen mellem trådhukommelse og hovedhukommelse.Det synkroniserer værdien af ​​alle variabler mellem trådhukommelse og hovedhukommelse.
Flygtige felter er ikke underlagt kompilatoroptimering.Synkronisering er underlagt kompilatoroptimering.

Fortsætter med denne artikel om flygtigt nøgleord i Java.

Eksempel:

offentlig klasse VolatileTest {privat statisk endelig Logger LOGGER = MyLoggerFactory.getSimplestLogger () privat statisk flygtig int MY_INT = 0 offentlig statisk ugyldig main (String [] args) {new ChangeListener (). start () ny ChangeMaker (). start ()} statisk klasse ChangeListener udvider tråd {@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() } } } } } 

Billede - Flygtigt-Edureka

Således er vi nået til slutningen af ​​denne artikel om 'Volatile Keyword in Java'. Hvis du ønsker at lære mere, skal du tjekke Java Training af Edureka, et betroet online læringsfirma. Edureka's Kurset er designet til at træne dig til både kerne- og avancerede Java-koncepter sammen med forskellige Java-rammer som Hibernate & Spring.

hvad der kan ændres i java

Har du et spørgsmål til os? Nævn det i kommentarsektionen på denne blog, og vi vender tilbage til dig hurtigst muligt.