Java
Java è un linguaggio object-oriented che permette la scrittura di programmi concorrenti attraverso
la creazione (new) ed esecuzione (start) di processi
chiamati threads che comunicano e si sincronizzano
usando variabili condition.
Le variabili condition condivise sono usate all’interno di metodi di tipo synchronized. Java esegue in mutua esclusione questi metodi (come una sezione critica) anche se i metodi wait e notify devono essere esplicitamente usati all’interno della sezione critica
Java non prevede alcun meccanismo di rilevamento e soluzione del deadlock!