Ce cours enseigne aux apprenants (professionnels de l'industrie et étudiants) les concepts fondamentaux de la programmation concurrente dans le contexte de Java 8. La programmation concurrente permet aux développeurs de gérer efficacement et correctement l'utilisation des ressources partagées dans les programmes parallèles. A la fin de ce cours, vous apprendrez comment utiliser les constructions concurrentielles de base en Java telles que les threads, les verrous, les sections critiques, les variables atomiques, l'isolation, les acteurs, la concurrence optimiste et les collections concurrentes, ainsi que leurs fondements théoriques (par exemple, les garanties de progression, le blocage, le blocage en direct, la famine, la linéarisabilité). Pourquoi suivre ce cours ? - Il est important que vous soyez conscient des fondements théoriques de la concurrence afin d'éviter des erreurs de programmation courantes mais subtiles.
Programmation concurrente en Java
Ce cours fait partie de Spécialisation Programmation parallèle, concurrente et distribuée en Java
Instructeur : Vivek Sarkar
25 442 déjà inscrits
Inclus avec
(657 avis)
Compétences que vous acquerrez
- Catégorie : Concurrence (informatique)
- Catégorie : Acteur Modèle
- Catégorie : Contrôle optimiste de la concurence
- Catégorie : Concurrence Java
Détails à connaître
Ajouter à votre profil LinkedIn
4 devoirs
Découvrez comment les employés des entreprises prestigieuses maîtrisent des compétences recherchées
Élaborez votre expertise du sujet
- Apprenez de nouveaux concepts auprès d'experts du secteur
- Acquérez une compréhension de base d'un sujet ou d'un outil
- Développez des compétences professionnelles avec des projets pratiques
- Obtenez un certificat professionnel partageable
Obtenez un certificat professionnel
Ajoutez cette qualification à votre profil LinkedIn ou à votre CV
Partagez-le sur les réseaux sociaux et dans votre évaluation de performance
Il y a 7 modules dans ce cours
Bienvenue à la programmation simultanée en Java ! Ce cours est conçu comme une série de trois parties et couvre un thème ou un ensemble de connaissances à travers des conférences vidéo, des démonstrations et des projets de codage.
Inclus
1 vidéo5 lectures1 devoir de programmation1 sujet de discussion
Dans ce module, nous allons nous familiariser avec les threads et les verrous, qui constituent les éléments de base de la programmation simultanée depuis plus de cinquante ans. Aujourd'hui, toutes les plates-formes informatiques prennent en charge les threads et les verrous sous une forme ou une autre et les mettent à la disposition des développeurs dans un large éventail de langages de programmation. Nous apprendrons comment les threads peuvent être créés, joints et synchronisés en utilisant des verrous structurés (par exemple, des instructions/méthodes synchronisées) et non structurés (par exemple, les bibliothèques java.util.concurrent) en Java. Nous découvrirons également de nouvelles classes de bogues qui peuvent survenir lorsque des programmes concurrents doivent accéder à des ressources partagées. Ces bogues sont appelés violations des garanties de vivacité/progrès et incluent les blocages (deadlock), les blocages (livelock) et l'inanition (starvation). Nous conclurons ce module en étudiant différentes solutions au problème classique des "philosophes à table", et nous utiliserons ces solutions pour illustrer des cas de blocage, de blocage en direct et de famine.
Inclus
6 vidéos6 lectures1 devoir1 devoir de programmation
Dans ce module, nous apprendrons différentes approches pour coordonner les accès aux ressources partagées sans rencontrer les bogues de blocage ou de verrouillage étudiés précédemment. Les sections critiques/isolées sont des constructions de programmation concurrente de plus haut niveau (par rapport aux verrous) qui simplifient la mise en œuvre de l'exclusion mutuelle en garantissant l'absence de deadlocks et de livelocks. L'isolation basée sur les objets assouplit les contraintes imposées par les sections critiques en permettant de spécifier l'exclusion mutuelle par objet, comme l'illustre l'exemple de l'arbre enchevêtré (Spanning Tree). Les variables atomiques de Java représentent un cas important, mais restreint, d'isolation basée sur l'objet qui est mis en œuvre efficacement sur toutes les plates-formes matérielles. Enfin, nous apprendrons comment l'isolation basée sur l'objet peut être encore assouplie avec les modes d'accès en lecture/écriture.
Inclus
6 vidéos6 lectures1 devoir1 devoir de programmation
Rejoignez le professeur Vivek Sarkar qui s'entretient avec l'ingénieur logiciel Shams Imam, dans leurs bureaux du centre-ville de Houston, au Texas, sur les threads, les verrous, les blocages, les constructions de haut niveau et de bas niveau, et l'importance de la programmation concurrente
Inclus
2 vidéos1 lecture
Dans ce module, nous allons apprendre une autre approche de haut niveau de la programmation concurrente appelée le modèle "Acteur". Une différence majeure entre le modèle Acteur et le modèle Sections isolées est qu'il n'y a pas de course aux données possible dans le modèle Acteur parce qu'il n'autorise aucune forme de variables partagées. Cependant, comme dans tous les modèles de programmation concurrente, des formes supérieures de non-déterminisme sont toujours possibles dans le modèle Actor en raison d'un asynchronisme inhérent à l'ordre dans lequel les messages peuvent être délivrés. Nous étudierons plusieurs exemples de concurrence utilisant le modèle Actor, y compris l'algorithme classique du tamis d'Eratosthène pour générer des nombres premiers, ainsi que des modèles producteur-consommateur avec des tampons illimités et limités.
Inclus
6 vidéos6 lectures1 devoir1 devoir de programmation
Dans ce module, nous étudierons les structures de données concurrentes, qui constituent une couche logicielle essentielle dans tous les systèmes de programmation multithread. Tout d'abord, nous apprendrons ce qu'est la Concurrence Optimiste, un modèle multithread important dans lequel deux threads peuvent progresser de manière "optimiste" sur le travail qui leur est assigné sans se soucier des conflits mutuels, et en vérifiant uniquement les conflits avant de "livrer" les résultats de leur travail. Nous étudierons ensuite la structure de données largement utilisée des files d'attente concurrentes. Même si les API permettant d'utiliser les files d'attente concurrentes sont très simples, leur mise en œuvre à l'aide du modèle Optimistic Concurrency peut s'avérer complexe et sujette aux erreurs. À cette fin, nous apprendrons également la notion formelle de linéarisation afin de mieux comprendre les exigences de correction pour les structures de données concurrentes. Nous étudierons ensuite les cartes de hachage concurrentes, une autre structure de données concurrente largement utilisée. Enfin, nous discuterons d'un algorithme concurrent permettant de trouver un arbre d'extension minimum d'un graphe non orienté, un algorithme qui repose sur l'utilisation de structures de données concurrentes sous les couvertures.
Inclus
6 vidéos7 lectures1 devoir1 devoir de programmation
Les deux prochaines vidéos montreront l'importance d'apprendre la programmation parallèle et la programmation distribuée en Java. Le professeur Vivek Sarkar s'entretiendra avec des professionnels de l'industrie à Two Sigma sur la façon dont les thèmes de nos deux autres cours sont utilisés sur le terrain.
Inclus
2 vidéos1 lecture
Instructeur
Offert par
Recommandé si vous êtes intéressé(e) par Développement de logiciels
Pour quelles raisons les étudiants sur Coursera nous choisissent-ils pour leur carrière ?
Avis des étudiants
Affichage de 3 sur 657
657 avis
- 5 stars
66,81 %
- 4 stars
24,80 %
- 3 stars
5,78 %
- 2 stars
1,06 %
- 1 star
1,52 %
Ouvrez de nouvelles portes avec Coursera Plus
Accès illimité à plus de 7 000 cours de renommée internationale, à des projets pratiques et à des programmes de certificats reconnus sur le marché du travail, tous inclus dans votre abonnement
Faites progresser votre carrière avec un diplôme en ligne
Obtenez un diplôme auprès d’universités de renommée mondiale - 100 % en ligne
Rejoignez plus de 3 400 entreprises mondiales qui ont choisi Coursera pour les affaires
Améliorez les compétences de vos employés pour exceller dans l’économie numérique
Foire Aux Questions
L'accès aux cours et aux devoirs dépend de votre type d'inscription. Si vous suivez un cours en mode audit, vous pourrez consulter gratuitement la plupart des supports de cours. Pour accéder aux devoirs notés et obtenir un certificat, vous devrez acheter l'expérience de certificat, pendant ou après votre audit. Si vous ne voyez pas l'option d'audit :
Il se peut que le cours ne propose pas d'option d'audit. Vous pouvez essayer un essai gratuit ou demander une aide financière.
Le cours peut proposer l'option "Cours complet, pas de certificat" à la place. Cette option vous permet de consulter tous les supports de cours, de soumettre les évaluations requises et d'obtenir une note finale. Cela signifie également que vous ne pourrez pas acheter un certificat d'expérience.
Lorsque vous vous inscrivez au cours, vous avez accès à tous les cours de la Specializations, et vous obtenez un certificat lorsque vous terminez le travail. Votre certificat électronique sera ajouté à votre page de réalisations - de là, vous pouvez imprimer votre certificat ou l'ajouter à votre profil LinkedIn. Si vous souhaitez uniquement lire et visualiser le contenu du cours, vous pouvez auditer le cours gratuitement.
Si vous vous êtes abonné, vous bénéficiez d'une période d'essai gratuite de 7 jours pendant laquelle vous pouvez annuler votre abonnement sans pénalité. Après cette période, nous ne remboursons pas, mais vous pouvez résilier votre abonnement à tout moment. Consultez notre politique de remboursement complète.