• Aucun résultat trouvé

3 e année Programmation Objet Avanée

N/A
N/A
Protected

Academic year: 2021

Partager "3 e année Programmation Objet Avanée "

Copied!
2
0
0

Texte intégral

(1)

Liene Informatique

3 e

année Programmation Objet Avanée

TD Thread en Java

1 Synhronization sur terminaison ou sur moni-

teur

publi lass Compteur {

private stati int pt = 0;

publi void inrementeCpt() {

try {

Thread.sleep(1);

}

ath(InterruptedExeption e) {

System.out.println(e.getMessage());

}

pt++;

System.out.println("pt vaut "+pt);

}

}

1. ÉriredanslalasseCompteuruneméthodemainquirééuneinstanede

Compteuret lane50threads,haquethreadnefaisantqu'inrémenterle

ompteurptparappelàinrementeCpt.Quelproblèmevaapparaître?

2. Proposer une solution à e problème en utilisant la synhronisation sur

terminaisonàl'aidedelaméthodejoindelalasseThread.

3. Proposeruneautresolutionutilisantlasynhronisationsurmoniteur.

2 Semaphore

Érire une lasse Semaphore qui reproduit le omportement de la lasse

java.util.onurrent.Semaphoreenutilisant les méthodes waitet notify

de la lasse Objet. La lasse devra orir un onstruteur Semaphore(int

permisInitiaux),une méthode bloquante aquire(int permis) et une mé-

thoderelease(int permis).

3 Tri parallélisé

Le but de l'exerie est d'étudier la parallélisation du tri fusion. On peut

supposerqu'ilexisteunefontiondefusiondedeuxsetionsd'untableau.

1. Érire une versionmulti-tâhes dutri fusion utilisant lasynhronisation

(2)

sur moniteur et les méthodes wait et notify. Chaque thread aura une

référenesursonparentpourpouvoirluinotierqu'ilaterminésontrai-

tement.

3. Érireuneversionmulti-tâhesdutrifusionutilisantlasynhronisationà

l'aidedelalasseSemaphore.

4 Interbloage

publi lass FunnyDeadLok {

private int value;

private final Objet readLok = new Objet();

private final Objet writeLok = new Objet();

publi void setValue(int value) {

synhronized(readLok) {

synhronized(writeLok) {

this.value = value;

}

}

}

publi int getValue() {

synhronized(readLok) {

return value;

}

}

publi void performs() {

Thread t = new Thread() {

publi void run() { setValue(12); }

};

synhronized(writeLok) {

t.start();

try { Thread.sleep(1000); }

ath(InterruptedExeption e) { e.printStakTrae(); }

System.out.println(getValue());

}

}

publi stati void main(String[℄ args) {

FunnyDeadLok oups = new FunnyDeadLok();

oups.performs();

}

}

Quesepasserat-ilàl'exéutiondelalasseFunnyDeadLok?Pourquoi?

NB:lamahinevirtuelleoreunoutildedétetiondesinterbloages(tapez

Crl+

\

sousLinux,ouCrl+Pause sousWindows).

Références

Documents relatifs

[r]

L’intérêt de choisir n puissance de 2 est qu’on aura à chaque étape un nombre pair de monotonies à fusionner, et que les monotonies d’une étape donnée auront toutes la

Postconditions : Les monotonies de nomFicX sont réparties (1 sur 2) dans des fichiers appelés nomFicA et nomFicB : la première monotonie est copiée dans le fichier A,

public: accès total aux données et aux méthodes membres private : accès réservé aux méthodes membres de la class.. Chapitre 3 : Programmation Objet

Il nous reste seulement à démontrer que le tri par fusion, appliqué à 3 fichiers dont deux sont ouverts en lecture et un en écriture, est praticable, même sur un

De plus, si, pour fE, x est pris dans fA, il en est de même pour fG; et si, pour fE, x est pris dans l'un des deux fichiers fB ou fC, alors pour fG, x est pris dans fF, dont il

3) Combiner : les deux sous-listes triées sont alors combinées de sorte à ce que la liste résultat soit triée... Il nécéssite de l’ordre de n log(n) comparaisons/affectations

Dans le tri rapide, après les 2 tris partiels, tous les éléments de la partie gauche sont inférieurs au pivot, alors que tous les éléments de la partie droite... naturelle, et