Middle
Маънии истифодаи ReadWriteLock чист?
sobes.tech AI
Ҷавоб аз AI
ReadWriteLock имкон медиҳад чандирон ба як сарчашмаи муштарак дар як вақт хонанд, аммо танҳо як дар як вақт метавонад ба он нависад. Ин дар сенарияҳое, ки хондан бештар аз навиштан аст, иҷрои беҳтарро таъмин мекунад.
Компонентҳои асосӣ:
- Read Lock: метавонад дар як вақт аз ҷониби чандирон нигоҳ дошта шавад.
- Write Lock: танҳо аз ҷониби як дар як вақт нигоҳ дошта мешавад. монеъ мешавад дигар нависандагон ва хонандагонро.
Ҳаволаи монанд бе ReadWriteLock талаб мекард, ки истифодаи synchronized ё ReentrantLock, ки ҳамаи амалиётҳоро (хондан ва навиштан) дар вақти нигоҳ доштани бандро монеъ мешавад.
Масалан истифода:
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(); // гирифтани банд барои хондан
try {
// хондани маълумот
return data;
} finally {
rwLock.readLock().unlock(); // озод кардани банд барои хондан
}
}
public void writeData(String newData) {
rwLock.writeLock().lock(); // гирифтани банд барои навиштан
try {
// навиштани маълумот
this.data = newData;
} finally {
rwLock.writeLock().unlock(); // озод кардани банд барои навиштан
}
}
}