1. define a max wait time cycle and transaction time out. This will avoid any deadlock possibility and self recovery as well.
2. my mLockedRecords Map contains the recno and the the Thread.currentThread() Thread instance value. This i am using to identify the unique ClientID. i use this in lock and unlock methods to wait or notify calls appropriately.
To make things simple. A selection from the UI, (is only at the UI as a marker, involves no round trip to the server) and as soon as the user presses book, then it is an atomic operation via RMI -> calling the dataclass and then delete/create/update operations on the record. So i believe it is guaranteed that a unique thread is assigned for each atomic concurrent client request ? right or wrong ?
All the delete/update are atomic operations perform lock/unlock with in the method call,
Well, timeout is not a requirement, but many Database vendors does ........