Portál AbcLinuxu, 14. května 2025 00:34
System.currentTimeMillis()
bude 20 milisekund vracat to iste cislo. Navyse, ten interval nie je vzdy rovnaky. Pred casom sme robili testy spravania sa operacnych systemov v tomto ohlade, a dosli sme k nasledovnemu: FreeBSD v priemere updatovalo cas vo velmi castych itervaloch (menej ako 10 milisekund), ale malo velky rozptyl v itervaloch updatov (az do 100 milisekund). Linux mal updaty pomalsie (20 - 30 milisekund), relativne stabilne. Windows updatoval takmer vylucne po 15 alebo 30 milisekundach. Solaris 9 aj 10 mal v priemere itervaly najdlhsie, ale velmi stabilne, okolo 40 milisekund, presne cislo si nepamatam.
Toto spravanie sa asi da ovplyvnit konfiguraciou kernelu toho ktoreho systemu. V reale ale sleep kratsi ako niekolko desiatok milisekund nema zmysel.
Btw, pod akou verziou Javy robis? Ak pod 1.4, tak si rozbal src.zip
a pozri si, ako pracuje metoda java.lang.Object.wait(long, int)
. Budes prekvapeny. Neprijemne prekvapeny. Ale ziskas realisticky pohlad. Hold, od real-time OS sme este daleko.
SunOS 5.9/5.10 : 10ms Linux 2.4.21 : 20ms Windows 2003 Server : 16ms FreeBSD 6.0 : 2msOpravujem este jeden udaj: najstabilnejsie intervaly boli v pripade Linuxu.
:)... dika..
Spominal si System.currentTimeMillis()
... A k tomu by som mal dotaz : A co funkcia System.nanoTime()
od verzie 1.5?... Ta vracia cas v nanosekundach. A pocitam s tym ze to nevracia System.currentTimeMillis()*1000000
.
System.nanoTime()
je v Jave 5 nativna, takze podla javovskych zdrojakov sa neda povedat, co robi skutocne. Chcelo by to pozriet sa na zdrojaky JVM:
public static native long nanoTime();Definicia
Object.wait(long, int)
sa nezmenila:
public final void wait(long timeout, int nanos) throws InterruptedException { if (timeout < 0) { throw new IllegalArgumentException("timeout value is negative"); } if (nanos < 0 || nanos > 999999) { throw new IllegalArgumentException( "nanosecond timeout value out of range"); } if (nanos >= 500000 || (nanos != 0 && timeout == 0)) { timeout++; } wait(timeout); }Takze ak to ma nanosekundy vacsie ako 500000, tak zvysi wait o milisekundu. Ak to ma nanosekundy nenulove a milisekundy nulove, waituje to aspon obligatnu jednu milisekundu.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.