I am a little confuse about how volatile variable effectively accesses from "main" memory. How's it different from a variable (non-volatile) that has a local copy ? What's the typical workflow whenever multiple threads accesses a non-volatile vs a volatile variable ? I mean how do they work behind the scene ?
1
There are 1 best solutions below
Related Questions in JAVA
- I need the BIRT.war that is compatible with Java 17 and Tomcat 10
- Creating global Class holder
- No method found for class java.lang.String in Kafka
- Issue edit a jtable with a pictures
- getting error when trying to launch kotlin jar file that use supabase "java.lang.NoClassDefFoundError"
- Does the && (logical AND) operator have a higher precedence than || (logical OR) operator in Java?
- Mixed color rendering in a JTable
- HTTPS configuration in Spring Boot, server returning timeout
- How to use Layout to create textfields which dont increase in size?
- Function for making the code wait in javafx
- How to create beans of the same class for multiple template parameters in Spring
- How could you print a specific String from an array with the values of an array from a double array on the same line, using iteration to print all?
- org.telegram.telegrambots.meta.exceptions.TelegramApiException: Bot token and username can't be empty
- Accessing Secret Variables in Classic Pipelines through Java app in Azure DevOps
- Postgres && statement Error in Mybatis Mapper?
Related Questions in VOLATILE
- ConditionObject of ReentranentLock: fields are not decorated as volatile
- How CPUs Use the LOCK Prefix to Implement Cache Locking and ensure memory consistency
- Why is the volatile keyword necessary in this program?
- java keyword volatile not behaving as expected
- Java Thread behaving synchronously
- force compiler to refresh variable content in specific point
- two threads sometimes observe the same variable value and sometimes not
- x64: Concurrent writes to bool array
- print() make thread-local cache invalid?
- How to share a volatile field with another thread
- Java use synchronized and volatile when manipulating multiple properties and locking on a lock object
- Pass non-volatile variable's address to a volatile object pointer
- Is it mandatory to declare a variable volatile when I have a synchronized block to increment an int in Java?
- Does JMM guarantees that volatile overwrites with the same value will be eventually visible?
- Inconsistency between Volatile and Interlocked
Related Questions in NON-VOLATILE
- Gulp 4 - Received a non-Vinyl object in `dest()`
- Manage FIFO implemented in a non-volatile flash NOR memory
- Excel replace Indirect function with a non volatile formula but referencing a cell with named ranges in
- DTC status byte - DEM AUTOSAR
- C++ - Why compiler doesn't allow to assign volatile variable
- Memory FRAM MB85RC256V data sheet interpretation
- Tss2_Sys_NV_DefineSpace failed with 0x80013 error
- Excel - Non-Volatile alternative to INDIRECT within INDEX/MATCH
- Excel - Dynamic ranges without volatile formulas or VBA
- New flutter rules caused this ERROR: The argument type 'String?' can't be assigned to the parameter type 'String'
- Immediate storage of combined DTC - Dem AUTOSAR
- Do Android ART and HotSpot behave differently in non-volatile variable visibility?
- DEM Dependency on NVM
- CREATE TABLE is not allowed in a non-volatile function
- Load Address (LMA) for a ld link script when using non volatile memory (NVRAM)
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Let's say you have a variable that can be accessed by multiple threads.
Thread 1 looks at the variable. Because looking at shared memory is more expensive than thread-local memory, it makes a copy of the variable. (Note that an object won't be copied, just its reference.)
Thread 2 looks at the same variable. It decides to change the variable. But Thread 1 doesn't know it! Thread 1 is still using stale data. This is a Very Bad Thing. By making it
volatile, each thread must look at the original variable when accessing it. They aren't permitted to make local copies, so it won't get stale.