Should synchronize with private monitor only to avoid lock with other threads which might wat to synchronize on factory