```lock()``` нужно делать ровно до ```try{}```, чтобы случайно не сделать лишний ```unlock()```.