This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
In Monhouse's book, in retrieveDvd(long locationInFile) method, the auther choose synchronize (database) instead of using lock.readLock().lock().
The explanation "Using a ReadWriteLock would be a counterproductive in this case, as all operations would need a WriteLock.... would result in poorer performance."
1. When I decide to use ReadWriteLock instead of synchronize keyword, should I make sure I have a thread doing writing and another thread doing reading?
2. If I only have threads doing reading from a data file, should I use synchronize keyword?
3. If I only have threads doing reading from a data file and I choose to use ReadWriteLock, the lock algorithm will end up checking if there is a write lock exist and slows down the performance. Is it true?