Sincronizzazione degli oggetti

Le attività vengono suddivise in modo che alcune si occupano solo di accedere alle classi dati come Autobus, Autorimessa, ecc. Le altre non lo fanno direttamente:

Solo le attività che accedono alle classi dati vanno sincronizzate. Vengono chiamate attività atomiche.

L'implementazione definitiva garantisce che due di queste non sono mai attive insieme. Quando vengono chiamate entrambe da flussi di esecuzione paralella, parte solo una delle due mentre l'altra rimane in attesa della sua conclusione.

In questo modo, ogni attività atomica, ogni attività che accede alle classi dati, ha un accesso esclusivo e non interrompibile alle classi dati durante tutta la sua esecuzione. Dato che questo blocca tutte le altre attività atomiche, è bene che si concluda il più rapidamente possibile. Deve terminare appena ha finito di accedere ai dati.

Uno dei modi per garantire il sincronismo è quello degli oggetti unici (singleton):