I have the B&S project. I implemented the LockManager for this project and I wanted to solve the problem of a thread that must consume no CPU cycles after it tries to lock a resource that has been locked by another client. I thought that it is more important to meet this requirement than the code simplicity (another requirement . I read some other posts with this problem but there was no code posted.
My solution includes 2 HashMaps 1.cookieMap - Used for maintaining the locked records key - recordNumber, value - cookie returned when the record has been locked 2.recordLocks - Used for keeping locks for each record that has been locked. The LockManager is used as a member in the Data class which is also responsible for detecting if a record for which a client waits to lock was updated/deleted until it acquires the lock.