new 应该在锁的外面，否则影响并发