Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 14222|Odpoveď: 0

[Komunikácia] Prehľad o základných typoch bezpečnosti vlákien v Jave a I++

[Kopírovať odkaz]
Zverejnené 5. 4. 2015 22:17:45 | | |

V Jave sú ostatné základné premenné atómové, okrem 8-bajtových, 64-bitových premenných Long a Double.


Java storage model vyžaduje, aby operácie get aj store boli atómové, ale pre nevolatilné dlhé a dvojité premenné umožňuje JVM rozdeliť 64-bitové čítanie alebo zápis na dve 32-bitové operácie.

Ak čítanie a zápis prebieha na rôznych vláknach, čítanie dlhého nevolatilného typu môže viesť k vysokému počtu 32 bitov jednej hodnoty a nízkym 32 bitom druhej.

Takže aj keď vám na expirovaných dátach nezáleží, nemusí byť bezpečné používať zdieľané, meniteľné dlhé a dvojité premenné v multithreaded programe, pokiaľ nie sú vyhlásené za volatilné alebo chránené zámkom.


Keď už hovoríme o atómových operáciách, znamená to, že čítanie a písanie sú atómové, napríklad i=5; Toto je atómová operácia.

Ak sa však operácia dvoch atómov vykonáva súčasne, nemusí byť nutne atómová, napríklad najprv čítanie a potom zápis, potom je možné, že premenná bola po čítaní upravená.

i++ je taká operácia, najprv číta a potom zapisuje, takže celočíselná premenná je atómová, nie že i++ je atómová operácia.

Keď použijete for(int i=0; i<10000; i++){System.out.print(i)}

Zistíte, že nakoniec nevytlačím 10 000, ale asi 8-9 tisíc.


Ale v prípade viacvláknového spracovania, aj keď je celočíselná premenná atómová, môžu nastať problémy s bezpečnosťou vlákien, čo je problém viditeľnosti vlákien, takže je potrebné pridať volatilný príkaz.

Tento modifikátor je nútená premenná, ktorá sa zakaždým číta z pamäte a nie je uložená v registroch.




Predchádzajúci:SQL 2008 zobrazí chybovú správu (poskytovateľ: SQL Network Interfaces, chyba: 25 - Connection word).
Budúci:[Rýchlo a zbesilo 7] debutuje na 2.12G DVD Najčistejšia verzia na internete
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com