Middle
What is the essence of using ReadWriteLock?
sobes.tech AI
Answer from AI
ReadWriteLock allows multiple threads to read a shared resource simultaneously, but only one thread to write to it at a time. This improves performance in scenarios where reads are more frequent than writes.
Main components:
- Read Lock: Can be held by multiple threads simultaneously.
- Write Lock: Can only be held by one thread. It blocks both other writers and readers.
A similar behavior without ReadWriteLock would require using synchronized or ReentrantLock, which would block all operations (reading and writing) while any thread holds the lock.
Example usage:
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
class SharedResource {
private final ReadWriteLock rwLock = new ReentrantReadWriteLock();
private String data = "Initial Data";
public String readData() {
rwLock.readLock().lock(); // Acquire read lock
try {
// Read data
return data;
} finally {
rwLock.readLock().unlock(); // Release read lock
}
}
public void writeData(String newData) {
rwLock.writeLock().lock(); // Acquire write lock
try {
// Write data
this.data = newData;
} finally {
rwLock.writeLock().unlock(); // Release write lock
}
}
}