Comunicazione fra threads
la sincronizzazione permette di evitare l’esecuzione contemporanea di parti di codice delicate
- evitando comportamenti imprevedibili
il multithreading può essere sfruttato al meglio solo se i vari threads possono comunicare per cooperare al raggiungimento di un fine comune
- esempio classico: la relazione produttore-consumatore
- il thread consumatore deve attendere che i dati da utilizzare vengano prodotti
- il thread produttore deve essere sicuro che il consumatore sia pronto a ricevere per evitare perdita di dati
Java fornisce metodi della classe Object
- disponibili in istanze di qualunque classe
- invocabili solo da metodi sincronizzati