2012-09-26 18 views
5

Ho sperimentato codici per vari metodi di temporizzazione. Un modo per creare un ritardo è eseguire un thread usando thread.sleep (millis), ma è molto chiaro che il tempo "risveglia" il thread non è così preciso e potrebbe essere prima o dopo questo tempo. Poi mi sono imbattuto nella definizione in cui esiste un'opzione per usare thread.sleep (millis, nanos) dove nanos fornisce "Extra nanosecondi di precisione".Precisione sleep filo

La mia domanda è se thread.sleep() non è così preciso per millisecondi, a cosa serve aggiungere i nanos extra? L'aggiunta di questo valore rende il metodo di sonno improvvisamente più accurato, come forzare il sistema operativo ad essere più severo o consentire una priorità più alta durante il monitoraggio? Inoltre, .join() ha la stessa opzione, suppongo che la risposta alla parte thread.sleep() sia simile alla parte .join(). Grazie.

risposta

1

Questo link vi darà una buona idea sulla precisione di Thread.sleep e OS dipendenza https://blogs.oracle.com/dholmes/entry/inside_the_hotspot_vm_clocks

+0

Grazie per aver condiviso il link Royston, ci sono alcune tidbbits ci sono più di quello che sapevo prima, ma non aiuta la mia domanda. Continuo a chiedermi come thread.sleep (millis, nanos) sia diverso da thread.sleep (millis). – Tam

+1

O quel riferimento è cambiato o non l'ho letto abbastanza bene la prima volta (più che probabile, ero stanco). In realtà aiuta. Grazie! – Tam

+1

Il link è morto. Ti preghiamo di includere gli snippet la prossima volta in modo che questa risposta non vada persa nel dimenticatoio quando i siti web cambiano gli URL. – Silmarilos