The Java memory model
Simple, fast, and practical non-blocking and blocking concurrent queue algorithms