Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 14222|Vastaus: 0

[Viestintä] Näkemyksiä Java- ja I++-säikeiden turvallisuuden perustyypeistä

[Kopioi linkki]
Julkaistu 5.4.2015 22.17.45 | | |

Javassa muut perusmuuttujat ovat atomisia, lukuun ottamatta Longin ja Doublen 8-tavuisia, 64-bittisiä muuttujia.


Java-tallennusmalli vaatii, että sekä hankimis- että tallennusoperaatiot ovat atomisia, mutta ei-haihtuville pitkille ja kaksoismuuttujille JVM mahdollistaa 64-bittisen luku- tai kirjoitustoiminnon jakamisen kahteen 32-bittiseen operaatioon.

Jos luku- ja kirjoitusprosessi tapahtuu eri säikeissä, ei-haihtuvan tyypin pitkän lukeminen voi johtaa korkeaan 32 bittiin toisessa arvossa ja matalaan 32 bittiin toisessa.

Joten vaikka et välittäisi vanhentuneista tiedoista, monisäikeisessä ohjelmassa ei välttämättä ole turvallista käyttää jaettuja, muokattavia pitkiä ja kaksoismuuttujia, ellei niitä ole julistettu volatiileiksi tai suojattu lukolla.


Puhuttaessa atomisista operaatioista, se tarkoittaa, että lukeminen ja kirjoittaminen ovat atomisia, kuten i=5; Tämä on atomioperaatio.

Kuitenkin, jos kahden atomin toiminta tehdään yhdessä, se ei välttämättä ole atominen, kuten ensin lukeminen ja sitten kirjoittaminen, jolloin muuttujaa on muokattu lukemisen jälkeen.

i++ on tällainen operaatio, ensin luetaan ja sitten kirjoitetaan, joten kokonaislukumuuttuja on atominen, ei että i++ olisi atominen operaatio.

Kun käytät for(int i=0; i<10000; i++){System.out.print(i)}

Huomaat, etten lopulta julkaise 10 000, vaan noin 8–9 tuhatta.


Mutta monisäikeisyyden tapauksessa, vaikka kokonaislukumuuttuja olisi atominen, saattaa esiintyä säikeiden turvallisuusongelmia, mikä on säikeen näkyvyysongelma, joten sinun täytyy lisätä volatiili-lause.

Tämä modifikaattori on pakotettu muuttuja, joka luetaan muistista joka kerta eikä sitä tallenneta rekistereihin.




Edellinen:SQL 2008 antaa virheilmoituksen (palveluntarjoaja: SQL Network Interfaces, virhe: 25 - Connection word).
Seuraava:[Fast and Furious 7] julkaisee 2.12G DVD:n Internetin selkeimmän version
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com