Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 14222|Svar: 0

[Kommunikation] Indsigt i de grundlæggende typer af Java- og I++-trådsikkerhed

[Kopier link]
Opslået på 05/04/2015 22.17.45 | | |

I Java er de andre grundlæggende variable atomare, undtagen de 8-byte, 64-bit variable Long og Double.


Java-lagringsmodellen kræver, at både hent- og lagreoperationer er atomare, men for ikke-flygtige lange og dobbelte variable tillader JVM opdeling af en 64-bit læse- eller skriveoperation i to 32-bit operationer.

Hvis læsning og skrivning sker på forskellige tråde, kan læsning af en ikke-flygtig type long resultere i høje 32 bit af den ene værdi og lave 32 bit af den anden.

Så selv hvis du ikke bekymrer dig om udløbne data, kan det være usikkert at bruge delte, muterbare lange og dobbelte variable i et multitrådet program, medmindre de er erklæret flygtige eller beskyttet med en lås.


Når vi taler om atomare operationer, betyder det, at læsning og skrivning er atomar, såsom i=5; Dette er en atomoperation.

Hvis to atomer dog udføres samtidig, er det ikke nødvendigvis atomart, som først at læse og derefter skrive, så er det muligt, at variabelen er blevet ændret efter læsning.

i++ er en sådan operation, læs først og skriv derefter, så heltalsvariabelen er atomar, ikke at i++ er en atomar operation.

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

Du vil opdage, at jeg ikke vil trykke 10.000 til sidst, men trykker omkring 8-9 tusinde.


Men i tilfælde af multi-threading, selv hvis heltalsvariablen er atomar, kan der opstå trådsikkerhedsproblemer, hvilket er et trådsynlighedsproblem, så du skal tilføje en flygtig sætning.

Denne modifikator er en tvungen variabel, der læses fra hukommelsen hver gang og ikke gemmes i registre.




Tidligere:SQL 2008 giver en fejlmeddelelse (udbyder: SQL Network Interfaces, fejl: 25 - Forbindelsesord).
Næste:[Fast and Furious 7] debuterer 2.12G DVD Den klareste version på internettet
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com