nested monitor calls

Xaero
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 173
Registriert: 8. Feb 2006 20:06

nested monitor calls

Beitrag von Xaero »

Hallo ich habe mir geade die Klausur von 2009 angeschaut und bin über die Aufgabe mit nested monitor calls gestolpert.
Also ich weiß, dass es zu einem Deadlock kommt, kann mir aber irgendwie kein Szenario ausdenken. Kann mir da jemand helfen?

eichberg
Dozentin/Dozent
Beiträge: 448
Registriert: 25. Sep 2007 12:12
Kontaktdaten:

Re: nested monitor calls

Beitrag von eichberg »

gegeben zwei Objekte: a und b

Code, der von Thread A ausgeführt wird:

Code: Alles auswählen

synchronized(a) {
  ... do something
  synchronized(b) {
  ...
  }
}
Code, der von Thread B ausgeführt wird:

Code: Alles auswählen

synchronized(b) {
  ... do something
  synchronized(a) {
   ...
  }
}
Schedule (Single Core):
Thread a läuft bis "do something" und wird dann unterbrochen
Thread b läuft bis "do something" und wird dann unterbrochen
...
Thread a kommt wieder dran und bleibt bei synchronized(b) hängen (Thread B hat das Lock)
Thread b kommt wieder dran und bleibt bei synchronized(a) hängen (Thread A hat das Lock)

Ich hoffe ich habe auf die Schnelle keinen Fehler gemacht.

Antworten

Zurück zu „Archiv“