At first glance, writing concurrent programs in Java seems like a straightforward task. But the devil is in the details. Fortunately, these details are strictly regulated by the Java memory model, which, roughly speaking, decides what values a program can observe for a field at any given time. Without respecting the memory model, a Java program might behave erratically and yield bugs that occur only on some hardware platforms. This presentation summarizes the guarantees that are given by Java’s memory model and teaches how to properly use volatile and final fields or synchronized code blocks. Instead of discussing the model in terms of memory model formalisms, the presentation builds on easy-to follow Java code examples.
Sign in to add slides, notes or videos to this session