I have heard many people saying that volatile keyword makes more sense in multicore processor than single core processor but don't know the reason. I tried to google but did not help in this aspect. Any reason for it?
As per my understanding volatile keyword should have equal importance whether it is multicore vs single processor. Reason is with volatile , its guaranteed that value will be updated in main memory (heap) instead of keeping it in thread local memory(stack) which can be seen by all threads. So whether its multicore or single processor, how does it makes difference?
The "sense of volatile" has nothing to do with the number of cores. The JVM hides the underlying architecture. Not to mention that volatile is a language keyword, so it should behave the same on every architecture.
You described what volatile does, and it is correct. The architecture of the application that could require the usage of volatile, nothing else.
If you are interested, here is a great post related to volatile, and the basic concepts of the memory model used in Java.
http://jeremymanson.blogspot.hu/2008/11/what-volatile-means-in-java.html