Esistono molti modi in cui i thread possono comunicare tra loro. Alcuni tra i più comuni sono:
Note:
Un signal consente a un thread di attendere un segnale inviato da un thread. Un segnale è solo un’indicazione di un evento, un’informazione di controllo: non contiene particolari dati
Tradizionalmente, ci sono due tipi di segnali:
Nel meccanismo dei signal, si identificano due ruoli ben distinti:
Spesso si tratta di thread diversi. Perciò, a livello di implementazione, è utile separare l’interfaccia del thread che invia dall’interfaccia di quello che aspetta. In questo modo ogni thread può chiamare l’operazione più appropriata per il suo suoro:
public interface SignalSender {
void send();
}
public interface SignalWaiter {
void waits() throws InterruptedException;
}