I\'ve seen this sentence:
the general rule is, if you have variables of primitive type that must be shared among multiple threads, declare those
Read this. Volatile has nothing to do with multi-threading.