Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 14222|Atbildi: 0

[Paziņojums] Ieskats Java un I++ pavedienu drošības pamatveidos

[Kopēt saiti]
Publicēts 05.04.2015 22:17:45 | | |

Java pārējie pamata mainīgie ir atomiski, izņemot 8 baitu, 64 bitu mainīgos Long un Double.


Java krātuves modelis prasa, lai gan iegūšanas, gan glabāšanas operācijas būtu atomiskas, bet nepastāvīgiem gariem un dubultiem mainīgajiem JVM ļauj sadalīt 64 bitu lasīšanu vai rakstīšanu divās 32 bitu operācijās.

Ja lasīšana un rakstīšana notiek dažādos pavedienos, nepastāvīga tipa garuma lasīšana var izraisīt augstu 32 bitu no vienas vērtības un zemu 32 bitus no otras.

Tātad, pat ja jums nerūp dati, kuriem beidzies derīguma termiņš, var nebūt droši izmantot koplietotus, mainīgus garos un dubultos mainīgos daudzpavedienu programmā, ja vien tie nav pasludināti par svārstīgiem vai aizsargāti ar slēdzeni.


Runājot par atomu operācijām, tas nozīmē, ka lasīšana un rakstīšana ir atomu, piemēram, i=5; Tā ir atomu operācija.

Tomēr, ja divu atomu darbība tiek veikta kopā, tā ne vienmēr ir atomu, piemēram, vispirms lasīšana un pēc tam rakstīšana, tad ir iespējams, ka mainīgais ir modificēts pēc lasīšanas.

I++ ir tāda operācija, vispirms lasiet un pēc tam rakstiet, tāpēc vesels mainīgais ir atoms, nevis tas, ka i++ ir atomu operācija.

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

Jūs atradīsiet, ka galu galā es neizdrukāšu 10 000 un izdrukāšu apmēram 8-9 tūkstošus.


Bet vairāku pavedienu gadījumā, pat ja vesels mainīgais ir atoms, var rasties pavediena drošības problēmas, kas ir pavediena redzamības problēma, tāpēc jums ir jāpievieno gaistošs paziņojums.

Šis modifikators ir piespiedu mainīgais, kas katru reizi tiek nolasīts no atmiņas un netiek saglabāts reģistros.




Iepriekšējo:SQL 2008 uzvednes ar kļūdas ziņojumu (pakalpojumu sniedzējs: SQL tīkla saskarnes, kļūda: 25 - savienojuma vārds).
Nākamo:[Fast and Furious 7] debitē 2.12G DVD Skaidrākā versija internetā
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com