The Java Memory Model
With the increasing availability and use of multicore processors Java developers need to acquire some understanding of the Java memory model. This is because multithread applications that work nicely on a single-core processor might exhibit “inexplicable” deficiencies when running on a multicore processor platform.