I've read on a site that volatile keyword is used when "Essentially, volatile is used to indicate that a variable's value will be modified by different threads"
should I ALWAYS make fields volatile when they're being modified by different threads or only when I notice synchronization problems ?