Sobes.tech
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
        }
    }
}