Java synchronized blocks are either methods or blocks within methods which are synchronized. Synchronized blocks help solve concurrency problems like race conditions, data visibility, instruction reordering etc. A Java synchronized block is synchronized on a specific "monitor object". Only one thread can enter any synchronized block synchronized on the same monitor object. Multiple synchronized blocks can be synchronized on a shared monitor object. Chapters 0:00 Java synchronized - introduction 0:10 Java synchronized keyword 0:15 Synchronized instance methods 0:55 Synchronized blocks inside instance methods 1:36 Synchronized block monitor objects 6:15 Example of threads calling synchronized instance methods on a shared object 8:59 Synchronized static methods 11:21 Using both synchronized static and instance methods 13:44 Using different monitor objects for synchronized blocks within same class 15:25 Sharing monitor objects across different class instances (objects) 16:23 Monitor objects cannot be null 16:50 Example of sharing monitor objects across objects 20:58 Don't use String constant objects as monitor objects 22:13 Java synchronized blocks inside Java Lambda Expressions 25:34 Java synchronized block reentrance rules 27:41 Java synchronized block data change visibility guarantee 33:14 Java synchronized block visibility example 36:00 Java synchronized block happens before guarantee 40:48 Java syncronized block limitations 42:42 Java synchronized block performance overhead 43:56 Java syncrhronized blocks in clustered setups Java Memory Model - JSR 133 https://www.cs.umd.edu/~pugh/java/memoryModel/jsr-133-faq.html Java volatile tutorial - textual / video: http://tutorials.jenkov.com/java-concurrency/volatile.html https://www.youtube.com/watch?v=nhYIEqt-jvY Java Concurrency & Multithreading Playlist https://www.youtube.com/playlist?list=PLL8woMHwr36EDxjUoCzboZjedsnhLP1j4 Java Memory Model http://tutorials.jenkov.com/java-concurrency/java-happens-before-guarantee.html https://www.youtube.com/watch?v=LCSqZyjBwWA&list=PLL8woMHwr36EDxjUoCzboZjedsnhLP1j4&index=4&t=803s Java Happens Before Guarantee http://tutorials.jenkov.com/java-concurrency/java-happens-before-guarantee.html https://www.youtube.com/watch?v=oY14UyP61F8 Java Lambda Expressions http://tutorials.jenkov.com/java/lambda-expressions.html https://www.youtube.com/playlist?list=PLL8woMHwr36HQhhPPdV_T8rigbuywMpD7