Назад к вопросам
Junior — Middle
78
Использовали ли вы механизм ReadWriteLock в своих проектах для управления параллельной работой с ресурсами?
Ответ от нейросети
sobes.tech AI
Да, механизм ReadWriteLock часто используется для управления параллельным доступом к ресурсам, когда нужно повысить производительность за счет разделения операций чтения и записи.
ReadWriteLock позволяет нескольким потокам одновременно читать ресурс (read lock), но при этом блокирует доступ для записи (write lock), если есть активные читатели. Запись же требует эксклюзивного доступа, то есть блокирует и других писателей, и читателей.
В Android (Java/Kotlin) это реализуется через класс ReentrantReadWriteLock из пакета java.util.concurrent.locks.
Пример использования на Kotlin:
val lock = ReentrantReadWriteLock()
val readLock = lock.readLock()
val writeLock = lock.writeLock()
var sharedResource = 0
fun readData(): Int {
readLock.lock()
try {
return sharedResource
} finally {
readLock.unlock()
}
}
fun writeData(value: Int) {
writeLock.lock()
try {
sharedResource = value
} finally {
writeLock.unlock()
}
}
Такой подход позволяет повысить эффективность при большом количестве операций чтения и редких записях, избегая излишней блокировки.