Cours Java - Threads PDF
Document Details
Uploaded by FastCerium967
École Supérieure de Technologie d'Agadir
A. Mazoul
Tags
Related
- Multi-Threading - Concurrent & Parallel Programming in Java PDF
- Java Concurrency in Practice PDF
- Tema 6 - JAVA (PDF)
- Lect6_OOP.pptx (Object-Oriented Programming)
- SWE211 Object-Oriented Programming Threads and Sharing Objects PDF
- SWE211 Object-Oriented Programming Threads and Sharing Objects Lecture Notes PDF
Summary
This document is a set of lecture notes on Java programming, focusing on threads. It explains the concept of threads, different ways to create them, and how to synchronize them. The document is geared towards undergraduate students.
Full Transcript
Programmation Orientée Objet et Langage Java 6- Les threads Module: Programmation Objet Avancée A.Mazoul Département Génie informatique Programmation orienté objet en Java...
Programmation Orientée Objet et Langage Java 6- Les threads Module: Programmation Objet Avancée A.Mazoul Département Génie informatique Programmation orienté objet en Java Les threads Les threads Un thread est une partie d'un programme qui peut fonctionner de façon autonome et parallèlement à d'autres parties du même programme. L’objectif des threads est de pouvoir répartir différents traitements d'un même programme en plusieurs unités distinctes pour permettre leurs exécutions "simultanées". La classe java.lang.Thread et l'interface java.lang.Runnable sont les bases pour le développement des threads en java. Le système d'exploitation va devoir répartir du temps de traitement pour chaque thread sur le ou les CPU de la machine. A.Mazoul Programmation orienté objet Java 2 Programmation orienté objet en Java Les threads Les threads en Java Il existe deux manières de créer un thread Java : En étendant la classe java.lang.Thread. En implémentant l'interface java.lang.Runnable. La méthode run() est l'endroit où l'action d'un thread a lieu. L'exécution d'un thread commence par l'appel de sa méthode start(). A.Mazoul Programmation orienté objet Java 3 Programmation orienté objet en Java Les threads Les threads en Java Le code précédent pourrait aussi écrit de cette manière plus concise: A.Mazoul Programmation orienté objet Java 4 Programmation orienté objet en Java Les threads Implémentation de l'interface Runnable il est possible d'implémenter l'interface Runnable. Celle-ci ne définit qu'une seule méthode run() dont l'implémentation doit contenir les traitements à exécuter. A.Mazoul Programmation orienté objet Java 5 Programmation orienté objet en Java Les threads L'arrêt d'un thread Par défaut, l'exécution d'un thread s'arrête pour deux raisons : la fin des traitements de la méthode run() est atteinte une exception est levée durant les traitements de la méthode run() Pour permettre une interruption des traitements d'un thread, il faut disposer d’une condition qui termine la méthode run(). A.Mazoul Programmation orienté objet Java 6 Programmation orienté objet en Java Les threads Synchroniser ses threads La synchronisation est un mécanisme qui permet de limiter l'exécution d'une portion de code à un seul thread. Si deux threads peuvent tous les deux exécuter une méthode qui modifie la valeur d’un même variable, alors la méthode doit être déclarée synchronisée, pour n'autoriser qu'un seul thread à exécuter la méthode à la fois. Un seul thread peut être à l'intérieur du corps de cette fonction. Un deuxième appel sera bloqué jusqu'à ce que le premier appel revienne ou que wait() soit appelé dans la méthode synchronisée. A.Mazoul Programmation orienté objet Java 7 Programmation orienté objet en Java Les threads Synchroniser ses threads La méthode afficher() non synchronisée: Aucune synchronisation A.Mazoul Programmation orienté objet Java 8 Programmation orienté objet en Java Les threads Synchroniser ses threads La méthode afficher() synchronisée: Ajout du mot-clé synchronized A et B ne sont Synchronisés pas car A et A2 synchronisés sont du car ce sont même objet A deux objets différents A.Mazoul Programmation orienté objet Java 9 Programmation orienté objet en Java Les threads Synchroniser un block Le bloc synchronisé peut être utilisé pour effectuer la synchronisation sur n'importe quelle partie spécifique de la méthode. Supposons que nous avons 50 lignes de code dans notre méthode, mais que nous voulions synchroniser seulement 5 lignes, dans de tels cas, nous pouvons utiliser un bloc synchronisé. Si nous mettons tous les codes de la méthode dans le bloc synchronisé, cela fonctionnera de la même manière que la méthode synchronisée. Exemple A.Mazoul Programmation orienté objet Java 10 Programmation orienté objet en Java Les threads Synchroniser ses threads La méthode afficher() static et synchronisée: Ajout de static synchronized Synchronisation entre tous les objets de la même classe A.Mazoul Programmation orienté objet Java 11 Programmation orienté objet en Java Les threads Les méthode Sleep(), wait() sleep(long millis) : Endormir le thread pour le délai exprimé en millisecondes précisé en paramètre wait() met le thread courant en attente jusqu'à ce que l'objet reçoive une notification par les méthodes notify() ou notifyAll(). wait(long timeout) : attend au plus la durée en millisecondes fournie en paramètre A.Mazoul Programmation orienté objet Java 12 A.Mazoul Réseaux informatiques Téléinformatique 13