Today many Java applications operate in a multithreaded environment. Atomic data structures have the benefit of not blocking the accessing threads when used concurrently. This session demonstrates how this is made possible by looking at a few high-level atomic data structures, Maps and Queues, taking them apart and looking at what makes them work. Presenters lay out these inner workings down to the Java memory model and compare pros and cons with blocking variants of the same data structures.