[PDF] les collections java pdf
[PDF] exercices corrigés sur les collections en java pdf
[PDF] cours php pdf complet
[PDF] parcours 3éme année du cycle secondaire collégial
[PDF] guerre et conflit en europe au xxe siecle cap
[PDF] la grenouille ? grande bouche cycle 1
[PDF] grenouille grande bouche petite section
[PDF] la grenouille ? grande bouche exploitation gs
[PDF] la grenouille ? grande bouche exploitation cp
[PDF] images séquentielles la grenouille ? grande bouche
[PDF] sequence guerre et conflits cap
[PDF] sequence parcours de personnage super heros
[PDF] parcours en profondeur d'un graphe en c
[PDF] parcours en profondeur itératif
[PDF] algorithme parcours en profondeur python
[PDF] exercices corrigés sur les collections en java pdf
[PDF] cours php pdf complet
[PDF] parcours 3éme année du cycle secondaire collégial
[PDF] guerre et conflit en europe au xxe siecle cap
[PDF] la grenouille ? grande bouche cycle 1
[PDF] grenouille grande bouche petite section
[PDF] la grenouille ? grande bouche exploitation gs
[PDF] la grenouille ? grande bouche exploitation cp
[PDF] images séquentielles la grenouille ? grande bouche
[PDF] sequence guerre et conflits cap
[PDF] sequence parcours de personnage super heros
[PDF] parcours en profondeur d'un graphe en c
[PDF] parcours en profondeur itératif
[PDF] algorithme parcours en profondeur python
![Solutions aux exercices du chapitre 10 : Programmation Java Solutions aux exercices du chapitre 10 : Programmation Java](https://pdfprof.com/Listes/18/27733-18solutions_java.pdf.pdf.jpg)
Solutions aux exercices du chapitre 10 :
Programmation Java
Automne 2017
Exercice 10.1Méthodevaleur:synchronizedou pas?Est-il nécessaire ou approprié que la méthodevaleursoit aussisynchronized?1
Solution :
Sur la base de ce qu"on a vu jusqu"à présent, non, ce n"est ni nécessaire, ni utile : l"attributvalétant unint, sa lecture est une opération atomique. L"ajout desynchronizedn"aurait donc aucun effet en termes d"atomicité. Par contre, on verra plus loin... que sisynchronizedn"est pas utilisé, le résultat pourrait ne pas être correct -à cause du modèle de mémoire de Java.2Exercice 10.2Différences entre deux classesCompteur?Est-ce que le comportement des deux classes suivantes diffère? Si oui de quelle
façon? classC ompteur{
private i nt v al1= 0 ,v al2= 0 ; public s ynchronized v oid i nc1(){ val1 += 1; public s ynchronized v oid i nc2(){ val2 += 1; classC ompteur{
private i nt v al1= 0 ,v al2= 0 ; privateO bjectl 1=
n ewO bject(),
l2 = n ewO bject();
public v oid i nc1(){ synchronized (l1){ v al1+ =1 ;} public v oid i nc2(){ synchronized (l2){ v al2+ =1 ;} }3Solution :
Oui, il y a une différence.
Dans le premier cas, les appels àinc1etinc2sont mutuellement exclusifs, donc ne peuvent s"exécuter en parallèle,puisque le verrou utilisé est le même, i.e., le verrou implicite associé à l"objet. Dans le deuxième cas,seuls des appels concurrents de la même méthode sont mutuellement exclusifs, puisque deux verrous distincts sont utilisés.4 Exercice 10.3Que fait un sémaphore?1.Que fait un sémaphore? 2.Que fon tles op érationsP()etV()?5
Solution :
1. V ariablesp écialequi co ntientun nom breen tiernon-négatifet qui est manip- ulée par deux opérations atomiques :PetV. Les sémaphores peuvent jouer différents rôles (voir plus bas) :Exclusion mutuelle
Synchronisation conditionnelle
Gestion de ressources
etc. gotos de la programmation concurrente 2. (a) P=Passerenpasser, prendre)Décrémente la variable (à moins qu"elle ne soit déjà 0). Utilisée (lorsque déjà 0) pour retarder (suspendre) un processus jusqu"à ce qu"un événement survienne. (b)V=Vrijgevenrelâcher)Incrémente la variable. Utilisée poursignalerun événement et, possiblement, réactiver un pro- cessus en attente.Exemples de patrons d"utilisation :
Exclusion mutuelle (verrou) :
Semaphore mutex = new Semaphore( 1 );
mutex.P(); ... section critique ... mutex.V();Synchronisation conditionnelle :
T buf;
Semaphore empty =
n ewS emaphore(1 ) ;
Semaphore full =
n ewS emaphore(0 ) ;
T hread
p our p roducteur 6 while(true){T data = ...
P roduire
i tem d ans d ata empty.P();A ttend
q ue b uf s oit v ide buf = data; full.V();S ignale
q ue b uf p leinT hread
p our c onsommateur while true full.P();A ttend
q ue b uf e st p leinT result = buf;
empty.V();S ignale
q ue b uf e st v ide ... traiter result ... }7Exercice 10.4Méthodevaleur:synchronizedou pas?Est-il nécessaire ou approprié que la méthodevaleurci-bas soitsynchronized?
classC ompteur{
private i nt v al= 0 ; public s ynchronized v oid i nc(){ val += 1; public i nt v aleur(){ return v al; }8Solution :
Non, pas strictement nécessaire, car on pourrait plutôt indiquer que l"attribut valestvolatile.9Exercice 10.5Exemple spécial illustrant le modèle de mémoire de Java.Qu"est-ce qui sera imprimé par le programme ci-bas?
class