You 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
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…