IBM have a good article on their Developerworks site discussing the shortcomings of the current Java Virtual Machince Memory model and what needs to be changed in order to make it more predicable in some circumstances.
The major issues described in the article are problems related to synchronized access to data, and compiler reordering of statements which may cause unexpected side effects.