Middle
Was ist eine Deadlock?
sobes.tech KI
Antwort von AI
Deadlock (gegenseitige Blockierung) — ist eine Situation in einer Multithread-Anwendung, bei der zwei oder mehr Threads sich gegenseitig blockieren, während sie auf die Freigabe von Ressourcen warten, die von einem anderen Thread gehalten werden. Infolgedessen kann keiner der Threads fortfahren.
Ein klassisches Beispiel für einen Deadlock:
- Thread A erwirbt Ressource 1 und wartet auf Ressource 2.
- Thread B erwirbt Ressource 2 und wartet auf Ressource 1.
Beide Threads bleiben dauerhaft blockiert.
Zur Vermeidung von Deadlocks werden angewandt:
- Eine strikte Reihenfolge beim Erwerb von Ressourcen.
- Timeouts beim Warten auf Sperren.
- Verwendung von nicht blockierenden Algorithmen.
Beispiel in Java:
synchronized(resource1) {
synchronized(resource2) {
// Arbeit mit den Ressourcen
}
}
Wenn ein anderer Thread versucht, die Ressourcen in umgekehrter Reihenfolge zu erwerben, kann ein Deadlock entstehen.