[PDF] Solutions aux exercices du chapitre 10 : Programmation Java



Previous PDF Next PDF
















[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

Solutions aux exercices du chapitre 10 : Programmation Java

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.2

Exercice 10.2Différences entre deux classesCompteur?Est-ce que le comportement des deux classes suivantes diffère? Si oui de quelle

façon? class

C 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; class

C ompteur{

private i nt v al1= 0 ,v al2= 0 ; private

O bjectl 1=

n ew

O bject(),

l2 = n ew

O bject();

public v oid i nc1(){ synchronized (l1){ v al1+ =1 ;} public v oid i nc2(){ synchronized (l2){ v al2+ =1 ;} }3

Solution :

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 ew

S emaphore(1 ) ;

Semaphore full =

n ew

S 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 lein

T hread

p our c onsommateur while true full.P();

A ttend

q ue b uf e st p lein

T result = buf;

empty.V();

S ignale

q ue b uf e st v ide ... traiter result ... }7

Exercice 10.4Méthodevaleur:synchronizedou pas?Est-il nécessaire ou approprié que la méthodevaleurci-bas soitsynchronized?

class

C ompteur{

private i nt v al= 0 ; public s ynchronized v oid i nc(){ val += 1; public i nt v aleur(){ return v al; }8

Solution :

Non, pas strictement nécessaire, car on pourrait plutôt indiquer que l"attribut valestvolatile.9

Exercice 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

M emoryModel{

static i nt x = 0 , y = 0, r1, r2; public s tatic v oid m ain(S tring[]a rgs) {

Thread t1 =

n ew

T hread(( )- >{

r1 = x; I 1 y = 1; I 2

Thread t2 =

n ew

T hread(( )- >{

r2 = y; I 3 x = 2; I 4 t1.start(); t2.start(); try t1.join(); t2.join(); c atch (E xceptione ) {}

System.out.println(

r1 + r 1+ r2 + r 2) ; }10

Solution :

Voici les diverses possibilités, avec les entrelacements des quatre instructions

I1, ...,I4qui conduisent à ces résultats :

I1; I2; I3; I4:

r1 = 0; r2 = 1quotesdbs_dbs2.pdfusesText_3