Futures Flashcards
Unterschied Prozess zu Thread?
Prozess
- Teilt Speicherbereich nicht
- Unabhängiger Task
Thread
- Teilt Speicherbereich
- Arbeitet an gleichem Task wie andere Threads
Wie läuft Nebenläufigkeit bei Single CPU ab?
Scheduler
Wie läuft Nebenläufigkeit bei Multicore Systemen ab?
Jede CPU hat eigenen Scheduler und eigene Threads
Zustände von einem Thread?
- Neu
- Bereit
- Laufend
- Blockiert
- Beendet
Was bedeutet synchronized bei einer Java Funktion?
Blockiert gesamte Methode für alle Threads ausser den Thread der sie zuerst ausführt.
Wo kann man synchronized noch nutzen?
Im Scope der Funktion
public void addName(String name) { synchronized(this) { lastName = name; nameCount++; } nameList.add(name); }
Was ist eine Race Condition?
Wenn das Ergebnis einer Kalkulation durch Zugriff mehrerer Threads an einem zeitkritischen Zeitpunkt verschiedene Ergebnisse liefert.
Was ist ein Deadlock?
Wenn die Anforderung und Freigabe von Locks nicht in der selben Reihenfolge stattfindet.
Was bedeutet Starvation (verhungern) von Threads?
Durch Priorisierung von Threads kommen manche davon nie an die Reihe
Wann ist Synchronisation notwendig?
Wenn ein Objekt veränderbar ist und geteilt wird (shared - mutable)
Nenne Monads für synchrone Tasks
- Try (Einzelne)
- Option (Einzelne)
- Iterable (Mehrere)
Nenne Monads für asynchrone Tasks
- Future (Einzelne)
- Observable (Mehrere)
Was ist ein Future?
- Objekt das ein Ergebnis für die Zukunft bereit hält
- Future ist ein Thread im Threadpool
- Kann Ergebnis als auch Try enthalten
Welchen Status kann ein Future haben?
- Pending (Wartend)
- Success (Erfolgreich)
- Failure (Fehlgeschlagen)
Wie lautet die aktuelle callback Funktion eines Future?
onComplete { case Success(result) => result case Failure(error) => error }