采用ReetrantLock替换Object Lock, 避免  double check的错误