Wurden früher Prozessoren durch höhere Taktung schneller, ist hier kaum noch Luft nach oben. Vielmehr werden die Prozessoren seit einigen Jahren dadurch leistungsstärker, dass sie mehr Kerne enthalten. Um dies zu nutzen, ist nebenläufige Programmierung erforderlich.
Dies erfordert teilweise ein Umdenken, mindestens aber Kenntnis einiger Fallstricke. Was passiert beispielsweise, wenn mehrere Threads auf gemeinsame Daten zugreifen möchten? Wie wird hier synchronisiert, ohne dass es zum berüchtigten Deadlock kommt? Und ist es möglich, quasisequenziell zu entwickeln und den Code dann parallel auszuführen?
Vorkenntnisse
Der Vortrag richtet sich im Wesentlichen an Java-Entwickler. Viele Themen gelten zwar für nebenläufige und parallele Programmierung im Allgemeinen, jedoch werden diese anhand von Java-Sprachmitteln in die Praxis umgesetzt.
Lernziele
* Nebenläufigkeit und Parallelität
* Probleme paralleler Verarbeitung, wie Race Condition, Starvation, Deadlock
* Synchronisierungsmittel, wie Volatile, Synchronized, Locks, Semaphor
* Thread-sichere Collections
* Datenstrukturen zum Austausch zwischen Threads, wie (De)Queue
* Parallelisierungsframeworks, wie Executor, ForkJoin, Parallel Stream
//
Michael Müller
@muellermi
entwickelt seit mehr als 30 Jahren Software. Im InEK verantwortet er als Bereichsleiter Softwareentwicklung sowohl die Entwicklung interner Software als auch die von Datenportalen im Gesundheitswesen. Als Mitglied der JSF Expert Group beteiligt er sich an der Entwicklung von Java EE. Darüber hinaus schreibt er Bücher, Fachartikel und betreut sein Blog (blog.mueller-bruehl.de).