MENU

Fun & Interesting

Java Synchronized - The synchronized keyword in Java and Java synchronized blocks and methods

Jakob Jenkov 95,474 lượt xem 4 years ago
Video Not Working? Fix It Now

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

Comment