mas estou intrigado por que usar a palavra "monitor do objeto" em vez de "bloqueio do objeto"?
Consulte a resposta do ulmangt para links que explicam o termo "monitor" usado neste contexto. Observe que:
"Os monitores foram inventados por Per Brinch Hansen e CAR Hoare e foram implementados pela primeira vez na linguagem Concurrent Pascal de Brinch Hansen."
(Fonte: Wikipedia )
Por que usar o termo "monitorar" em vez de "bloquear"? Bem, estritamente falando, os termos significam coisas diferentes ... especialmente se você os usar da maneira que foram originalmente planejados para serem usados.
Um "bloqueio" é algo com primitivas de aquisição e liberação que mantêm certas propriedades de bloqueio; por exemplo, uso exclusivo ou gravador único / leitor múltiplo.
Um "monitor" é um mecanismo que garante que apenas um thread pode executar uma determinada seção (ou seções) de código a qualquer momento. Isso pode ser implementado usando um bloqueio (e "variáveis de condição" que permitem que os encadeamentos aguardem ou enviem notificações para outros encadeamentos de que a condição foi cumprida), mas é mais do que apenas um bloqueio. De fato, no caso do Java, o bloqueio real usado por um monitor não está diretamente acessível. (Você simplesmente não pode dizer "Object.lock ()" para evitar que outros threads o adquiram ... como você pode com um JavaLock
instância .)
Em suma, se alguém fosse pedante, "monitorar" é, na verdade, um termo melhor do que "trava" para caracterizar o que o Java está fornecendo. Mas, na prática, os dois termos são usados quase que alternadamente.