Frage zu Locks

Klösp

Aktives Mitglied
Hallo

ich hätte mal eine kleine Frage zu Read/WriteLock

Folgendes Beispiel:
Java:
private final List<String> list = new ArrayList<String>();
private final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
private final Lock readLock  = lock.readLock();
private final Lock writeLock = lock.writeLock();

public String get( int index )
{
  readLock.lock();
  try
  {
    return list.get( index );
  }
  finally
  {
    readLock.unlock();
  }
}

public void add( int index, String element )
{
  writeLock.lock();
  try
  {
    list.add( index, element );
  }
  finally
  {
    writeLock.unlock();
  }
}
Quelle:Galileo Computing :: Java 7 - Mehr als eine Insel - 2 Threads und nebenläufige Programmierung

Was mir nicht ganz klar geworden ist.
Lesende Opertationen sollen ja beliebig möglich sein.
Wofür ist dann der ReadLock?

Den lesenden(get) Zugriff möchte ich doch gar nicht sperren.
Was macht der ReadLock genau? Anmelden, dass hier mehrere Thread zugreifen dürfen?
Nur wo wäre da der Sinn, weil das geht doch ohne hin, wenn ich gar keinen Lock benutze?

Vielen Dank im Vorraus
 
wenn ein thread das writeLock locked, sind automatisch alle readlocks gelocked.

Damit niemand, wärend dem möglicherweise länger dauerndem schreibvorgang einen inkonsistenten zustand lesen kann.
 

Zurück
Oben