Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 14222|Svare: 0

[Kommunikasjon] Innsikt i de grunnleggende typene Java- og I++-trådsikkerhet

[Kopier lenke]
Publisert på 05.04.2015 22:17:45 | | |

I Java er de andre grunnleggende variablene atomære, bortsett fra de 8-byte, 64-bits variablene Long og Double.


Java-lagringsmodellen krever at både hent- og lagringsoperasjoner er atomære, men for ikke-flyktige lange og doble variabler tillater JVM å dele en 64-bits lese- eller skriveoperasjon i to 32-bits operasjoner.

Hvis lesing og skriving skjer i forskjellige tråder, kan lesing av en ikke-flyktig type long resultere i høye 32 biter av én verdi og lave 32 biter av den andre.

Så selv om du ikke bryr deg om utgåtte data, kan det hende det ikke er trygt å bruke delte, foranderlige lange og doble variabler i et multitrådet program med mindre de er erklært flyktige eller beskyttet med en lås.


Når vi snakker om atomoperasjoner, betyr det at lesing og skriving er atomære, som i=5; Dette er en atomoperasjon.

Men hvis operasjonen mellom to atomer utføres samtidig, er den ikke nødvendigvis atomær, som å lese først og deretter skrive, da er det mulig at variabelen har blitt endret etter lesing.

i++ er en slik operasjon, les først og skriv deretter, så heltallsvariabelen er atomær, ikke at i++ er en atomær operasjon.

Når du bruker for(int i=0; i<10000; i++){System.out.print(i)}

Du vil oppdage at jeg ikke trykker 10 000 til slutt, men trykker rundt 8-9 tusen.


Men i tilfelle multitråding, selv om heltallsvariabelen er atomær, kan det oppstå trådsikkerhetsproblemer, som er et trådsynlighetsproblem, så du må legge til en flyktig setning.

Denne modifikatoren er en tvungen variabel som leses fra minnet hver gang og ikke lagres i registre.




Foregående:SQL 2008 gir en feilmelding (leverandør: SQL Network Interfaces, feil: 25 - Tilkoblingsord).
Neste:[Fast and Furious 7] lanserer 2.12G DVD Den klareste versjonen på Internett
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com