I was reading about the problems related to shared state concurrency (as opposed to message passing concurrency as in Erlang and Oz). I came across the following interesting bug described on the wiki discovered by Luke Gorrie. There is also a reference to a Sun article describing the bug and the solution. This is ancient history but probably a problem misunderstood by many Java programmers.