• Aucun résultat trouvé

Université de Nice-Sophia Antipolis POLYTECH

N/A
N/A
Protected

Academic year: 2022

Partager "Université de Nice-Sophia Antipolis POLYTECH"

Copied!
1
0
0

Texte intégral

(1)

Université de Nice-Sophia Antipolis POLYTECH

ELEC5-TR 2020–2021

Examen de Langage Java

Durée : 0h30

Aucun document autorisé

Mobiles interdits Note 1 : le sujet de l’exercice qui suit est tiré du site de M. S. Perennes (www- sop.inria.fr). Note 2 : la qualité des commentaires, avec notamment la présence d’affirmations significatives, ainsi que les noms donnés aux variables, et la bonne indentation rentreront pour une part importante dans l’appréciation du travail.

I 1. Écrivez une application Java qui, dans sa méthodemain, crée deux threads. Le premier incré- mente de 1 dix millions de fois un compteur (une variable entière) initialisée à 0. Le deuxième thread décrémente de façon concurrente de 1 dix millions de fois cemêmecompteur.

Une fois l’exécution des deux threads achevée, vous afficherez la valeur du compteur qui nor- malement doit être égale à 0.

/* * @ a u t h o r : V . G r a n e t ( V i n c e n t . G r a n e t @ u n i v - c o t e d a z u r . fr ) */

p u b l i c c l a s s C o m p t e u r { //ressource critique

p r i v a t e i n t cpt = 0;

//Rôle : incrémente le compteur de 1.

p u b l i c s y n c h r o n i z e d v o i d i n c r () { t h i s. cpt ++; } //Rôle : décrémente le compteur de 1

p u b l i c s y n c h r o n i z e d v o i d d é c r () { t h i s. cpt - -; } //

p u b l i c S t r i n g t o S t r i n g () {r e t u r n S t r i n g . v a l u e O f (t h i s. cpt );}

//

p u b l i c s t a t i c v o i d m a i n ( S t r i n g [] a r g s ) { i n t max = 1 0 0 0 0 0 0 0 ; //dix millions

C o m p t e u r cpt = new C o m p t e u r ();

//créer les 2 threads d’incrémentation et de décrémentation

T h r e a d i n c r = new T h r e a d (() - > {f o r (i n t i =0; i < max ; i ++) cpt . i n c r ( ) ; } ) ; T h r e a d d é c r = new T h r e a d (() - > {f o r (i n t i =0; i < max ; i ++) cpt . d é c r ( ) ; } ) ; //démarrer les threads

i n c r . s t a r t (); d é c r . s t a r t ();

//attendre la fin des threads t r y {

i n c r . j o i n ();

d é c r . j o i n ();

}

c a t c h ( I n t e r r u p t e d E x c e p t i o n e ) { S y s t e m . e x i t ( 1 ) ; } //afficher le compteur => 0

S y s t e m . out . p r i n t l n ( cpt );

} }

. . . .

1

Références

Documents relatifs

Avec la notation de pointeur, écrivez en C la fonction somme qui prend en paramètre une chaîne de caractères qui représente un entier naturel et qui renvoie la somme de ses

Écrivez de façon itérative la fonction itos qui renvoie la conversion d’un entier positif ou nul passé en paramètre, en sa représentation sous forme d’une chaîne de

Écrivez un programme qui lit sur l’entrée standard une opération arithmétique formée de 2 entiers et d’un caractère ( ’+’ , ’-’ , ’*’ ou ’/’ ) et qui écrit sur

Écrivez la fonction creerFichDates qui lit un fichier de texte contenant la suites d’entiers, et qui crée un fichier de dates valides (de type Date ).. Sans l’écrire, vous

Lors d’un appel de fonction ou de procédure, la transmission par valeur consiste à affecter, après évaluation, la valeur du pa- ramètre effectif à son paramètre formel

Au lieu de retirer, à chaque itération, 1 diviseur au dividende et d’incrémenter de 1 le quotient, le diviseur est multiplié successivement par 2 pour trouver son plus grand

qui prend en paramètre une chaîne de caractères, et qui remplace chaque chiffre par le caractère ’_’ dans celle-ci.. La fonction renvoie un pointeur sur le 1er caractère de

Il est nécessaire d’écrire un destructeur pour libérer explicitement la mémoire occupée par le tableau et les 3 points du triangle