but I am puzzled why use word “the object’s monitor” instend of “the object’s lock”?
See ulmangt’s answer for links that explain the term “monitor” as used in this context. Note that:
“Monitors were invented by Per Brinch Hansen and C. A. R. Hoare, and were first implemented in Brinch Hansen’s Concurrent Pascal language.”
(Source: Wikipedia)
Why use the term “monitor” rather than “lock”? Well strictly speaking, the terms do mean different things … especially if you use them in the way that they were originally intended to be used.
-
A “lock” is something with acquire and release primitives that maintain certain lock properties; e.g. exclusive use or single writer / multiple reader.
-
A “monitor” is a mechanism that ensures that only one thread can be executing a given section (or sections) of code at any given time. This can be implemented using a lock (and “condition variables” that allow threads to wait for or send notifications to other threads that the condition is fulfilled), but it is more than just a lock. Indeed, in the Java case, the actual lock used by a monitor is not directly accessible. (You just can’t say “Object.lock()” to prevent other threads from acquiring it … like you can with a Java
Lock
instance.)
In short, if one were to be pedantic “monitor” is actually a better term than “lock” for characterizing what Java is providing. But in practice, both terms are used almost interchangeably.