Dieser Kurs vermittelt Lernenden (Fachleuten aus der Industrie und Studenten) die grundlegenden Konzepte der gleichzeitigen Programmierung im Kontext von Java 8. Die nebenläufige Programmierung ermöglicht es Entwicklern, die Nutzung von gemeinsamen Ressourcen in parallelen Programmen effizient und korrekt zu vermitteln. Am Ende dieses Kurses lernen Sie die grundlegenden Konstrukte der Parallelität in Java wie Threads, Sperren, kritische Abschnitte, atomare Variablen, Isolation, Akteure, optimistische Parallelität und parallele Sammlungen sowie deren theoretische Grundlagen (z.B. Fortschrittsgarantien, Deadlock, Livelock, Starvation, Linearisierbarkeit) kennen. Warum dieser Kurs? - Es ist wichtig, dass Sie die theoretischen Grundlagen der Parallelität kennen, um häufige aber subtile Programmierfehler zu vermeiden.
Gleichzeitige Programmierung in Java
Dieser Kurs ist Teil von Spezialisierung Parallele, gleichzeitige und verteilte Programmierung in Java
Dozent: Vivek Sarkar
25.560 bereits angemeldet
Bei enthalten
(661 Bewertungen)
Kompetenzen, die Sie erwerben
- Kategorie: Gleichzeitigkeit (Informatik)
- Kategorie: Schauspieler Modell
- Kategorie: Optimistische Gleichzeitigkeitskontrolle
- Kategorie: Java Gleichzeitigkeit
Wichtige Details
Zu Ihrem LinkedIn-Profil hinzufügen
4 Aufgaben
Erfahren Sie, wie Mitarbeiter führender Unternehmen gefragte Kompetenzen erwerben.
Erweitern Sie Ihre Fachkenntnisse
- Lernen Sie neue Konzepte von Branchenexperten
- Gewinnen Sie ein Grundverständnis bestimmter Themen oder Tools
- Erwerben Sie berufsrelevante Kompetenzen durch praktische Projekte
- Erwerben Sie ein Berufszertifikat zur Vorlage
Erwerben Sie ein Karrierezertifikat.
Fügen Sie diese Qualifikation zur Ihrem LinkedIn-Profil oder Ihrem Lebenslauf hinzu.
Teilen Sie es in den sozialen Medien und in Ihrer Leistungsbeurteilung.
In diesem Kurs gibt es 7 Module
Willkommen bei Concurrent Programming in Java! Dieser Kurs ist als dreiteilige Serie konzipiert und deckt ein Thema oder einen Wissensbereich durch verschiedene Videovorträge, Demonstrationen und Programmierprojekte ab.
Das ist alles enthalten
1 Video5 Lektüren1 Programmieraufgabe1 Diskussionsthema
In diesem Modul werden wir mehr über Threads und Sperren erfahren, die seit über fünf Jahrzehnten als primitive Bausteine für die gleichzeitige Programmierung dienen. Alle Computerplattformen bieten heute irgendeine Form der Unterstützung für Threads und Sperren und stellen sie Entwicklern für eine Vielzahl von Programmiersprachen zur Verfügung. Wir werden lernen, wie Threads mit Hilfe von strukturierten (z.B. synchronisierte Anweisungen/Methoden) und unstrukturierten (z.B. java.util.concurrent libraries) Sperren in Java erstellt, verbunden und synchronisiert werden können. Wir werden auch neue Klassen von Fehlern kennenlernen, die auftreten können, wenn nebenläufige Programme auf gemeinsame Ressourcen zugreifen müssen. Diese Fehler werden als Verletzungen von Lebendigkeits-/Fortschrittsgarantien bezeichnet und umfassen Deadlock, Livelock und Starvation. Zum Abschluss dieses Moduls werden wir verschiedene Lösungen für das klassische "Dining Philosophers"-Problem untersuchen und diese Lösungen zur Veranschaulichung von Deadlock-, Livelock- und Starvation-Problemen verwenden.
Das ist alles enthalten
6 Videos6 Lektüren1 Aufgabe1 Programmieraufgabe
In diesem Modul lernen wir verschiedene Ansätze zur Koordinierung von Zugriffen auf gemeinsam genutzte Ressourcen kennen, ohne auf die bereits untersuchten Deadlock- oder Livelock-Fehler zu stoßen. Kritische/isolierte Abschnitte sind nebenläufige Programmierkonstrukte auf höherer Ebene (im Vergleich zu Sperren), die die Implementierung des gegenseitigen Ausschlusses vereinfachen, indem sie die Abwesenheit von Deadlocks und Livelocks garantieren. Die objektbasierte Isolierung lockert die durch kritische Abschnitte auferlegten Beschränkungen, indem sie es ermöglicht, den gegenseitigen Ausschluss auf einer objektspezifischen Basis zu spezifizieren, wie im Beispiel des Spanning Tree gezeigt. Die atomaren Variablen von Java stellen einen wichtigen, aber eingeschränkten Fall von objektbasierter Isolation dar, der auf allen Hardwareplattformen effizient implementiert ist. Schließlich werden wir lernen, wie die objektbasierte Isolation durch Lese-/Schreibzugriffsmodi weiter gelockert werden kann.
Das ist alles enthalten
6 Videos6 Lektüren1 Aufgabe1 Programmieraufgabe
Begleiten Sie Professor Vivek Sarkar zu einem Gespräch mit dem Software-Ingenieur Dr. Shams Imam in seinem Büro in Houston, Texas, über Threads, Sperren, Deadlocks, High-Level- und Low-Level-Konstrukte und die Bedeutung der gleichzeitigen Programmierung
Das ist alles enthalten
2 Videos1 Lektüre
In diesem Modul lernen wir einen weiteren High-Level-Ansatz für die gleichzeitige Programmierung kennen, das sogenannte "Actor"-Modell. Ein wesentlicher Unterschied zwischen dem Akteursmodell und dem Modell der isolierten Abschnitte besteht darin, dass im Akteursmodell keine Datenüberschneidungen möglich sind, da es keine Form von gemeinsam genutzten Variablen zulässt. Wie in allen Modellen der nebenläufigen Programmierung sind jedoch auch im Akteursmodell aufgrund der inhärenten Asynchronität in der Reihenfolge, in der Nachrichten zugestellt werden können, Formen des Nicht-Determinismus auf höherer Ebene möglich. Wir werden mehrere Beispiele für Gleichzeitigkeit unter Verwendung des Actor-Modells untersuchen, darunter den klassischen Sieve of Eratosthenes-Algorithmus zur Erzeugung von Primzahlen sowie Producer-Consumer-Muster mit unbegrenzten und begrenzten Puffern.
Das ist alles enthalten
6 Videos6 Lektüren1 Aufgabe1 Programmieraufgabe
In diesem Modul werden wir uns mit nebenläufigen Datenstrukturen beschäftigen, die eine wesentliche Softwareschicht in allen Multithread-Programmiersystemen bilden. Zunächst lernen wir Optimistic Concurrency kennen, ein wichtiges Multithreading-Muster, bei dem zwei Threads "optimistisch" Fortschritte bei der ihnen zugewiesenen Arbeit machen können, ohne sich über gegenseitige Konflikte Gedanken zu machen, und nur auf Konflikte prüfen, bevor sie die Ergebnisse ihrer Arbeit "festschreiben". Anschließend werden wir die weit verbreitete Datenstruktur Concurrent Queue untersuchen. Auch wenn die APIs für die Verwendung von Concurrent Queues sehr einfach sind, können ihre Implementierungen unter Verwendung des Optimistic Concurrency-Modells komplex und fehleranfällig sein. Zu diesem Zweck werden wir auch den formalen Begriff der Linearisierbarkeit kennenlernen, um die Anforderungen an die Korrektheit von nebenläufigen Datenstrukturen besser zu verstehen. Anschließend werden wir uns mit Concurrent Hash Maps beschäftigen, einer weiteren weit verbreiteten nebenläufigen Datenstruktur. Schließlich besprechen wir einen nebenläufigen Algorithmus zur Suche nach einem Minimum Spanning Tree eines ungerichteten Graphen, ein Algorithmus, der sich auf die Verwendung von nebenläufigen Datenstrukturen unter der Haube stützt.
Das ist alles enthalten
6 Videos7 Lektüren1 Aufgabe1 Programmieraufgabe
Die nächsten beiden Videos zeigen, wie wichtig es ist, etwas über parallele Programmierung und verteilte Programmierung in Java zu lernen. Professor Vivek Sarkar wird bei Two Sigma mit Fachleuten aus der Industrie darüber sprechen, wie die Themen unserer beiden anderen Kurse in der Praxis eingesetzt werden.
Das ist alles enthalten
2 Videos1 Lektüre
Dozent
Empfohlen, wenn Sie sich für Softwareentwicklung interessieren
Warum entscheiden sich Menschen für Coursera für ihre Karriere?
Bewertungen von Lernenden
661 Bewertungen
- 5 stars
66,86 %
- 4 stars
24,65 %
- 3 stars
5,90 %
- 2 stars
1,05 %
- 1 star
1,51 %
Zeigt 3 von 661 an
Geprüft am 19. Sep. 2020
Very good explanation of the concepts of locks, and how important data-structures example HashMap are optimized to improve performance
Geprüft am 26. Nov. 2020
It could have been better. Course content is very basic and just scratches the surface of concurrent programming. However, fully recommend it for beginners.
Geprüft am 8. Dez. 2024
Teach clear and concise. Good to know more about java concurrency. It is interesting to hand on programming such as actors which linked as list.
Neue Karrieremöglichkeiten mit Coursera Plus
Unbegrenzter Zugang zu 10,000+ Weltklasse-Kursen, praktischen Projekten und berufsqualifizierenden Zertifikatsprogrammen - alles in Ihrem Abonnement enthalten
Bringen Sie Ihre Karriere mit einem Online-Abschluss voran.
Erwerben Sie einen Abschluss von erstklassigen Universitäten – 100 % online
Schließen Sie sich mehr als 3.400 Unternehmen in aller Welt an, die sich für Coursera for Business entschieden haben.
Schulen Sie Ihre Mitarbeiter*innen, um sich in der digitalen Wirtschaft zu behaupten.
Häufig gestellte Fragen
Der Zugang zu Vorlesungen und Aufgaben hängt von der Art Ihrer Einschreibung ab. Wenn Sie einen Kurs im Prüfungsmodus belegen, können Sie die meisten Kursmaterialien kostenlos einsehen. Um auf benotete Aufgaben zuzugreifen und ein Zertifikat zu erwerben, müssen Sie die Zertifikatserfahrung während oder nach Ihrer Prüfung erwerben. Wenn Sie die Prüfungsoption nicht sehen:
Der Kurs bietet möglicherweise keine Prüfungsoption. Sie können stattdessen eine kostenlose Testversion ausprobieren oder finanzielle Unterstützung beantragen.
Der Kurs bietet möglicherweise stattdessen die Option 'Vollständiger Kurs, kein Zertifikat'. Mit dieser Option können Sie alle Kursmaterialien einsehen, die erforderlichen Bewertungen abgeben und eine Abschlussnote erhalten. Dies bedeutet auch, dass Sie kein Zertifikat erwerben können.
Wenn Sie sich für den Kurs einschreiben, erhalten Sie Zugang zu allen Kursen der Specializations, und Sie erhalten ein Zertifikat, wenn Sie die Arbeit abgeschlossen haben. Ihr elektronisches Zertifikat wird Ihrer Erfolgsseite hinzugefügt - von dort aus können Sie Ihr Zertifikat ausdrucken oder zu Ihrem LinkedIn-Profil hinzufügen. Wenn Sie die Kursinhalte nur lesen und ansehen möchten, können Sie den Kurs kostenlos besuchen.
Wenn Sie ein Abonnement abgeschlossen haben, erhalten Sie eine kostenlose 7-tägige Testphase, in der Sie kostenlos kündigen können. Danach gewähren wir keine Rückerstattung, aber Sie können Ihr Abonnement jederzeit kündigen. Siehe unsere vollständigen Rückerstattungsbedingungen.