Obsah:
Definice - Co znamená Volatile?
Volatile je klíčové slovo v programovacím jazyce java, které určuje, že členskou proměnnou spojenou s třídou lze asynchronně změnit více podprocesy. Těkavé klíčové slovo v kódu se při deklaraci člena chová jako modifikátor. Klíčová slova jsou v zásadě vyhrazená slova se zřetelným významem v kontextu kompilátoru.
Nestálé klíčové slovo se používá vždy, když proměnná znamená nějaký druh proměnné, která je závislá na prostředí nebo systému, jako jsou jednoduché čítače a hodiny.
Techopedia vysvětluje Volatile
Nestálé klíčové slovo zajišťuje, že každý přístup ke čtení k členské proměnné vrací její nejnovější hodnotu. Toto není účinné, když jsou poslední změny provedeny pomocí jiného vlákna. Pokud členská proměnná není deklarována jako volatilní, vlákno nebude schopno rozpoznat modifikace provedené pomocí jiného vlákna.
V případě dvojitého nebo dlouhého člena zajišťuje volatilní klíčové slovo také to, že virtuální počítač negeneruje dvě po sobě jdoucí 32bitové zápisy, ale místo toho vytvoří pouze jedno 64bitové zápisy. Pokud to není možné, implementace JVM pokračuje v zajišťování atomicity této funkce, aby se stará dolní polovina nečítala s novou vyšší polovinou nějakého volatilního dvojitého nebo dlouhého.
Volatile píše a čte, nastavuje vztah „stane se před“. Před přístupem k těkavému objektu dochází k synchronizaci mezi hlavní pamětí a proměnnými v mezipaměti, stejně jako k tomu dochází před vstupem nebo po opuštění synchronizovaného bloku. To znamená, že těkavý objekt lze bezpečně publikovat bez synchronizace; to znamená, když je k těkavému objektu přistupováno vláknem, jsou aktualizovány také členy tohoto objektu.
Pokud je proměnná popisována jako volatilní, kompilátor JVM a Java provede následující dvě věci.
- Kompilátor nedokáže maximalizovat příkazy a výrazy související s touto proměnnou.
- JVM synchronizuje proměnnou.
Výhody těkavých látek jsou následující:
- Je to lehké
- Způsobuje velmi malou režii čtení a zápisu, ale je stále rychlejší než zamykání.
- Těkavý je odolný vůči mrtvým zámkům.
