Czesc, na wstepie przeraszam za brak polskich znakow.
Przerabiam pakiet java.util.concurrent, trafilem na klase ReentrantReadWriteLock. Obiekt posiada 2 Locki :
- readLock - zakladany gdy odczytuje, czytac moze wiele watkow, pisac zaden.
- writeLock - lockowany tylko przez jeden watek (nie wiecej), ktory modyfikuje obiekt
Zakladajac locka w metodzie dostepowej kilkukrotnie - licznik (readLocka) sie inkrementuje, zupelnie jak w ReentrantLocku.
Natomiast w metodzie modyfikujacej jak rozumiem (w co szczerze watpie) moge tylko raz wywolac lock() - zatem tylko jeden watek bedzie mial dostep.
Pytanie - Interesuje mnie, jaka jest przewaga zastosowania ReentrantReadWriteLock nad dwoma ReentrantLock'ami ?
Wybierajac wariant dwoch ReentrantLock'ow by zapewnic synchronizacje musialbym sprawdzac za kazdym czy jeden z lockow nie jest zajety by zapewnic synchronizacje, zas w pierwszym przypadku zostaje wyreczony?
Mozecie mnie poprawic?