Why wait() and notify() are not in special class?
<p>Why are <code>wait</code>, <code>notify</code> and <code>notifyAll</code> methods placed in <code>Object</code>, not in some separated class?</p>

<p>Note, this question is not about moving them to <code>Thread</code> class, I just wonder why does they litter <code>Object</code>, not some new <code>Monitor</code> class.</p>

<p>I see the following shortcomings of that idea:</p>

<ul>
<li>We won't be able to use our for-other-purpose fields as monitors. But this seems to agree with principle of modularity.</li>
<li>Synchronized methods will now require some hack with generated hidden fields (like in closures), as <code>this</code> and <code>&lt;MyClass&gt;.class</code> become not valid monitors. </li>
</ul>

<p>So we could move away 5 methods from every object with a little woe. Or not?</p>