This is part of the notes from an online course (Java Multithreading) I’m taking on Udemy. Nothing complicated.
In theory it is possible that on some system a Java thread may ignore changes to its own data from other threads. If the changes are not made inside its own thread, it may have no effect. We can call it caching variable in thread.
To prevent such thing, we can add the keyword volatile to the variable that may be changed by other threads and guarantee that changes can be seen.
An example on gist.