Laborator 11

Lucrul cu fire de executie.

Obiective

  • construirea firelor de executie folosind clasa Thread si interfata Runnable
  • startarea firelor de executie
  • sincronizarea firelor de executie folosind metoda join()
  • excluderea mutuala a firelor folosind syncrhonized, wait() si notify()

Aspecte teoretice

Exercitii

1. Verificaţi funcţionarea aplicaţiei Counter din sectiunea Fire de executie. Înlocuiţi în cadrul aplicaţiei apelul metodelor start() din cadrul funcţiei main() cu apelul metodelor run(). Verificaţi din nou şi observaţi diferenţa în funcţionare a programului.

2. Testaţi programul TestSincronizare din sectiunea Fire de executie. Decomentaţi blocurile sincronizate din cadrul claselor FirGet şi FirSet şi observaţi diferenţa în funcţionare.

3. Construiti doua fire de executie de tip contor. Primul fir incrementeaza un contor de la 0 la 100 si face o pauza de 100 milisecunde dupa fiecare incrementare. Al doilea fir asteapta terminarea primului fir, incrementeaza un contor de la 101 la 200 si face o pauza de 200 milisecunde dupa fiecare incrementare.

4. Modelati un robot ce se poate deplasa intr-un spatiu bidimensional limitat de un patrat cu latura de 300 de unitati de lungime. Robotoul se poate deplasa pe directiile Nord, Sud, Est, Vest (fara a putea depasi spatiul delimitat de patratul cu latura de 300 de unitati de lungime). Robotul se deplaseaza cu o unitate de lungime, pe o directie random la intervale de 100 de milisecunde. Dupa fiecare schimbare de pozitie robotul afiseaza pe ecran id-ul propriu, si pozitia curenta. Construiti o aplicatie in care porniti 4 roboti ce se deplaseaza in acelasi timp.

5. Realizati un program Java cu interfata grafica pentru simularea unui cronometru (utilizând fire de execuţie). Acesta are două butoane, unul pentru start şi continuarea secvenţei de timp şi altul pentru revenirea la poziţia iniţială.