synchronized condition variable added