Does a variable that is accessed by multiple threads, but only inside synchronized blocks, need the volatile modifier? If not, why?
See Question&Answers more detail:osDoes a variable that is accessed by multiple threads, but only inside synchronized blocks, need the volatile modifier? If not, why?
See Question&Answers more detail:osYou do not need to use volatile
inside of synchronized
, synchronized already guarantees the correct behavior for local caching of variables when used consistently (on every access).
volatile
works on primitive values, and can be a nice shortcut for atomic accesses to a primitive type. Note that the behavior of volatile has changed in JDK 5 from 1.4.
More information can be found here