Skip to main content

Oleg Shelajev: Concurrency torture: testing your code within the Java Memory Model

Not sure about you, but one the most frustrating kind of bugs for me is dealing with concurrency issues. It often takes a lot skill to understand concurrency issues, plus some measure of agility to debug and wisdom to fix them. In fact, one of the most valuable assets in fixing those is a full understanding of what’s is going on under the hood of your Java program. In this post, I will show an example of a simple-yet-non-trivial concurrent program and prove that even in this simplistic case, there are outcomes which are hard to predict...