I generally don't like synchronized methods, because if someone externally were to synchronize on this object, the two locks could inadvertently clash.  How do you feel about switching it to synchronize(monitors){...} instead?