Portál AbcLinuxu, 3. prosince 2025 07:54
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.