Giriş
Şu satırı dahil ederiz. ReadWriteLock arayüzünü gerçekleştirir
Şöyle yaparız.
Şöyle yaparız.
Şöyle yaparız.
Şu satırı dahil ederiz. ReadWriteLock arayüzünü gerçekleştirir
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
- Eğer ve Read ve Write farkını gözetmek istemezsek ReentrantLock kullanılır.
Bu sınıf ReadWriteLock arayüzünden kalıtır
Kullanım
Örnek
Şöyle yaparız
public class Foo {ReadWriteLock lock = new ReentrantReadWriteLock();Lock readLock = lock.readLock();Lock writeLock = lock.writeLock();public void write (...) {writeLock.lock();try {...} finally {writeLock.unlock();}}public void read (...) {readLock.lock();try {...} finally {readLock.unlock();}}}
Örnek
Şöyle yaparız
private final ReadWriteLock LOCK = new ReentrantReadWriteLock(); private Collection<String> listOfNames = new ArrayList<>(); public void addName(String name) { LOCK.writeLock().lock(); try { listOfNames.add(name); } finally { LOCK.writeLock().unlock(); } } public boolean isInList(String name) { LOCK.readLock().lock(); try { return listOfNames.contains(name); } finally { LOCK.readLock().unlock(); } }
constructor
ReadWriteLock accountLock = new ReentrantReadWriteLock();
getReadLockCount metodu
Örnek
Şöyle yaparız
ReadWriteLock rwLock = new ReentrantReadWriteLock();
Lock readLock = rwLock.readLock();
Lock writeLock = rwLock.writeLock();
...
rwLock.getReadLockCount();
readLock metodu
public double getBalance() {
this.accountLock.readLock().lock();
double balance = ...
this.accountLock.readLock().unlock();
return balance;
}
writeLock metoduŞöyle yaparız.
public void addAmount(double amount) {
this.accountLock.writeLock().lock();
...
this.accountLock.writeLock().unlock();
}
Hiç yorum yok:
Yorum Gönder