Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 14222|Odgovoriti: 0

[Komunikacija] Vpogled v osnovne vrste varnosti niti v Javi in I++

[Kopiraj povezavo]
Objavljeno na 5. 04. 2015 22:17:45 | | |

V Javi so druge osnovne spremenljivke atomske, razen 8-bajtnih, 64-bitnih spremenljivk Long in Double.


Java model shranjevanja zahteva, da sta tako operaciji get kot store atomski, vendar za nehlapne dolge in dvojne spremenljivke JVM omogoča razdelitev 64-bitnega branja ali pisanja na dve 32-bitni operaciji.

Če se branje in pisanje dogajata na različnih niteh, lahko branje dolgega nehlapnega tipa povzroči visokih 32 bitov ene vrednosti in nizkih 32 bitov druge.

Torej, tudi če vam ni mar za potekle podatke, morda ni varno uporabljati deljenih, spremenljivih dolgih in dvojnih spremenljivk v večnitnem programu, razen če so razglašene za nestanovitne ali zaščitene z zaklepom.


Ko govorimo o atomskih operacijah, to pomeni, da sta branje in pisanje atomska, na primer i=5; To je atomska operacija.

Če pa se delovanje dveh atomov izvaja skupaj, ni nujno atomsko, na primer najprej branje in nato pisanje, potem je možno, da je bila spremenljivka po branju spremenjena.

i++ je takšna operacija, najprej preberi in nato zapiše, torej je celoštevilska spremenljivka atomska, ne pa da je i++ atomska operacija.

Ko uporabite for(int i=0; i<10000; i++){System.out.print(i)}

Ugotovili boste, da na koncu ne bom natisnil 10.000, ampak približno 8-9 tisoč.


Vendar pa v primeru večnitnosti, tudi če je celoštevilska spremenljivka atomska, lahko pride do varnostnih težav v niti, kar je problem vidnosti niti, zato je treba dodati volatilno izjavo.

Ta modifikator je prisilna spremenljivka, ki se vsakič bere iz pomnilnika in ni shranjena v registrih.




Prejšnji:SQL 2008 pošlje sporočilo o napaki (ponudnik: SQL Network Interfaces, napaka: 25 - Beseda povezave).
Naslednji:[Hitri in drzni 7] izide na DVD-ju 2.12G. Najjasnejša različica na internetu
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com