しかし、なぜ「オブジェクトのロック」の代わりに「オブジェクトのモニター」という言葉を使用するのか、私は困惑しています。
このコンテキストで使用される「モニター」という用語を説明するリンクについては、ulmangtの回答を参照してください。ご了承ください:
「モニターは、Per BrinchHansenとCARHoareによって発明され、BrinchHansenのConcurrentPascal言語で最初に実装されました。」
(出典:ウィキペディア)
「ロック」ではなく「モニター」という用語を使用するのはなぜですか。厳密に言えば、これらの用語は異なる意味を持ちます...特に、本来の使用目的で使用する場合はなおさらです。
「ロック」とは、特定のロックプロパティを維持する取得および解放プリミティブを持つものです。例:専用またはシングルライター/マルチリーダー。
「モニター」は、常に1つのスレッドのみがコードの特定のセクション(または複数のセクション)を実行できるようにするメカニズムです。これは、ロック(および、スレッドが条件が満たされるのを待機したり、他のスレッドに通知を送信したりできる「条件変数」)を使用して実装できますが、単なるロックではありません。実際、Javaの場合、モニターが使用する実際のロックには直接アクセスできません。(Javaの場合のように、他のスレッドが取得するのを防ぐために「Object.lock()」と言うことはできません。Lock
インスタンスの場合の。)
要するに、もし人が衒学的であるとすれば、Javaが提供しているものを特徴づけるために、「モニター」は実際には「ロック」よりも良い用語です。しかし実際には、両方の用語はほぼ同じ意味で使用されます。