Middle
ReadWriteLock foydalanishning mohiyati nima?
sobes.tech AI
AIdan javob
ReadWriteLock imkon beradi ko‘p oqimlar bir vaqtning o‘zida umumiy resursni o‘qishiga, lekin faqat bitta oqim bir vaqtning o‘zida unga yozishiga. Bu o‘qish yozishdan ko‘proq bo‘lsa, unumdorlikni oshiradi.
Asosiy komponentlar:
- Read Lock: Bir nechta oqimlar tomonidan bir vaqtning o‘zida ushlab turilishi mumkin.
- Write Lock: Faqat bitta oqim tomonidan ushlab turilishi mumkin. Boshqa yozuvchilar va o‘quvchilarni bloklaydi.
ReadWriteLock bo‘lmagan holatda, shunga o‘xshash xatti-harakat synchronized yoki ReentrantLock yordamida amalga oshirilgan bo‘lar edi, bu esa har qanday oqim blokirovkasi davomida barcha o‘qish va yozish operatsiyalarini to‘xtatardi.
Foydalanish misoli:
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(); // O‘qish blokirovkasi
try {
// Ma’lumotlarni o‘qish
return data;
} finally {
rwLock.readLock().unlock(); // O‘qish blokirovkasi ochiladi
}
}
public void writeData(String newData) {
rwLock.writeLock().lock(); // Yozish blokirovkasi
try {
// Ma’lumotlarni yozish
this.data = newData;
} finally {
rwLock.writeLock().unlock(); // Yozish blokirovkasi ochiladi
}
}
}