A imagem acima ilustra várias threads de execução em um sistema disputando o lock de um objeto instanciado. A thread que primeiramente “lockar” o objeto executará o código dentro do bloco sincronizado sem que as outras threads “a incomode”.
“[…]For synchronized blocks, you have to look at exactly what object has been used for locking. (What’s inside the parentheses after the word synchronized?) Threads that synchronize on the same object will block each other. Threads that synchronize on different objects will not.” (Kathy Sierra, Bert Bates)