yes, I think it's the best place
My question is: Should the syn keyword be on LockMan's lock() method,
you could, but what would it help?
inside LockMan's code block,
no, you were locking on the wrong object
on ConnImpl's lock() method,
you could but I wouldn't suggest that
or inside ConnImpl's lock() code block?
yes, it does!
Does it matter?
For example, do not assume that lock() and unlock() need to be implemented on Data. They are fine as they are. Yes, that means empty methods. Really! If you want to, you can flesh them out a bit by adding validation code for the record number, but the lock() and unlock() methods in Data do not need to implement locking at all.