I think it's safe to assume there is a similar "starting date" in other languages so I guess the specific implementation in Java doesn't matter.
Praticamente tutti i computer usano questa o una variazione simile di tempo Unix .
How is the time calculation performed by the computer? How does it know exactly how many milliseconds have passed from that given "starting date and time" to the current date and time?
In genere, un computer include uno o più dispositivi hardware che contano il tempo, in genere basati su un oscillatore a cristalli (lo stesso utilizzato nella maggior parte dei clock moderni). Esistono variazioni / standard server per tali dispositivi:
Questi dispositivi timer di solito hanno una batteria separata che consente loro di continuare a funzionare quando il computer è spento. Il computer interagisce con loro in due modi:
- Quando si avvia, legge l'ora corrente dal dispositivo
- A intervalli regolari, il dispositivo causa un interrupt hardware gestito dal sistema operativo per eseguire qualsiasi attività dipendente dal tempo .
Tuttavia, gli oscillatori a cristallo usati nei timer hardware hanno una precisione limitata e nel tempo si allontanano dal tempo corretto. Per le applicazioni in cui è importante avere un orologio preciso (o semplicemente per evitare il fastidio di doverlo aggiustare manualmente), i computer
sincronizzare regolarmente il loro tempo tramite il Network Time Protocol con un server orario, che è collegato (direttamente o indirettamente) ad un precisione orologio atomico .