title: Java uses object as monitor, isn't that object too heavy weight?
body: <p>I read this in Java language Spec 17.1:</p>
  
  <blockquote>
    <p>"Each object in Java is associated
    with a monitor, which a thread can
    lock or unlock."</p>
  </blockquote>
  
  <p>Why necessarily? Doesn't that make java object too heavy weight? I've no idea why a Object like, say, a string, should be naturally a monitor!</p>
  
  <p>EDIT:</p>
  
  <p>I think it over and yes, Java has a keyword <strong>synchronized</strong>, because <strong>EVERY</strong> object could have a synchronized method, so it's necessary to associate <strong>EVERY</strong> object a Monitor.</p>
  
  <p>But still this seems not a very good solution, usually you need more that one mutex for one class, except for that pojo classes that's really very simple.</p>