What’s the meaning of an object’s monitor in Java? Why use this word?

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.

Leave a Comment