重构代码，加锁