A follow-up to my JavaOne 2015 “HotSpot Synchronization, a Peek Under the Hood” session, this year’s session continues the investigation of concurrent programming in Java, with a strong emphasis on the implementation side. You will see how the JVM supports both the Java concurrency API and the Java memory model. For example, the presentation looks at how Java language-level constructs such as the volatile keyword change the way the JVM accesses memory across a variety of CPUs. After this session, you should have a more intuitive sense of why the Java memory model imposes the restrictions that it does.