See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 14222|Vastuse: 0

[Kommunikatsioon] Ülevaade Java ja I++ lõimeturbe põhilistest tüüpidest

[Kopeeri link]
Postitatud 05.04.2015 22:17:45 | | |

Java puhul on teised põhilised muutujad aatomlikud, välja arvatud 8-baidised, 64-bitised muutujad Long ja Double.


Java salvestusmudel nõuab, et nii hankimis- kui salvestustoimingud oleksid aatomilised, kuid mittevolatiilsete pika ja kahekordse muutuja puhul võimaldab JVM jagada 64-bitise lugemis- või kirjutamisprotsessi kaheks 32-bitiseks operatsiooniks.

Kui lugemis- ja kirjutamisprotsess toimub erinevatel lõimedel, võib mittevolatiilse pika tüübi lugemine anda ühe väärtuse kõrge 32 bitti ja teise väärtuse madala 32 bitti.

Seega, isegi kui aegunud andmed ei hooli sind, ei pruugi olla ohutu kasutada jagatud, muutuvaid pikki ja topeltmuutujaid mitmelõimelises programmis, välja arvatud juhul, kui need on kuulutatud volatiilseteks või kaitstud lukuga.


Rääkides aatomioperatsioonidest, tähendab see, et lugemine ja kirjutamine on aatomilised, näiteks i=5; See on aatomioperatsioon.

Kui aga kahe aatomi operatsioon toimub koos, ei ole see tingimata aatomiline, näiteks lugemine esmalt ja siis kirjutamine, siis on võimalik, et muutujat on pärast lugemist muudetud.

i++ on selline tehe, mida esmalt loetakse ja siis kirjutatakse, seega on täisarvumuutuja aatomiline, mitte et i++ oleks aatomiline operatsioon.

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

Sa avastad, et ma ei trükki lõpuks 10 000, vaid umbes 8-9 tuhat.


Kuid mitme lõimelise puhul, isegi kui täisarv on aatomiline, võib tekkida lõimede ohutusprobleeme, mis on lõime nähtavuse probleem, seega tuleb lisada volatiilne väide.

See modifikaator on sundmuutuja, mida loetakse iga kord mälust ja mida ei salvestata registritesse.




Eelmine:SQL 2008 annab veateate (pakkuja: SQL Network Interfaces, viga: 25 - Ühenduse sõna).
Järgmine:[Fast and Furious 7] esitleb 2.12G DVD-d – kõige selgem versioon internetis
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com