Aufgabe 4.4

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Aufgabe 4.4
Ich versteh die 4.4 nicht ganz! wie kann man alle gemeldete Notfälle gleichmäßig auf nThreads aufteilen?
wie kann man die Threads ohne eigene blockierende Synchronisation ermitteln wie häufig jede Kombination im Array vorkommt ?
Was ist der sinn einer ConcurrentHashMap?


Hallo VPROF,

das Aufteilen der Threads hast du in Picasso eigentlich schon gemacht,in der letzten Teilaufgabe. Dort hast du einfach von oben herab gesagt, welcher Thread was tun soll. Sie nehmen sich also nicht aus der gleichen Liste selbstständig ihre Aufgaben (Bonusfrage: Was würde passieren, wenn sie das so aus einer normalen LinkedList nehmen würden?)

Jetzt ist der Sinn der Aufgabe aber, dass sie zusammen auf einer gemeinsamen “Datenbank” arbeiten und obwohl sie getrennt sind, gemeinsam Informationen verwalten können und das ganz ohne Synchronisationsblöcke.
Das liegt am Konzept der ConcurrentHashMap. Eine Hashmap sollte bereits aus AuD bekannt sein (wenn nicht, gibt gute Youtube-Tutorials dazu), für die ConcurrentHashMap, die zumindest teilweise synchronisiert:
https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentHashMap.html


Steh am schlauch :frowning:

du meinst das durchlaufen und die Parallele Ausführung? oder das färben

kannst du das nochmal genauer erklären?


Es ist gemeint, dass du jedem Thread ein paar Indces des Arrays gibst. Da jeder Thread andere Indices bekommt und du alles in einer HashMap speicherst (die HashMap die wir verwenden sollen ist so gebaut, dass nur 1 Thread gleichzeitig drauf zugreift) ergeben sich keine Probleme mit der Nebenläufigkeit :wink: