split lock on putLock and takeLock