Hilo duerme demasiado tiempo

Escribí un progtwig simple y noté que mis subprocesos son demasiado rápidos para ejecutar JVisualVM, marcar qué aplicación quiero monitorear, conectar y mirar los subprocesos. Entonces los hice dormir. Y herramientas notadas ahora los reportan como solo durmiendo (o casi solo durmiendo). Aunque trabajen. Esto plantea la pregunta: ¿por qué?

new Thread(() -> { while(true) { System.out.println("not sleeping"); try { Thread.sleep(0,1); } catch (InterruptedException e) { e.printStackTrace(); } } }, "not sleeping!").start(); 

Este hilo debe dormir durante 1 nanosegundo, sin embargo, observe cómo lo informa JVisualVM:

corrió por un minuto pero corrió 5s

Después de funcionar durante 57 segundos, informa 5s de tiempo de ejecución y el descanso como si estuviera durmiendo, ¿un error o mi entendimiento es incorrecto?

No es solo JVisualVM:

 $ while true; do jstack 8277 | grep -A 2 not; done [% 20:34:27] "not sleeping!" #10 prio=5 os_prio=0 tid=0x00007f5ea82d1000 nid=0x2078 waiting on condition [0x00007f5e917c6000] java.lang.Thread.State: TIMED_WAITING (sleeping) at java.lang.Thread.sleep(Native Method) 

jstack también solo ocasionalmente reporta este hilo como RUNNING. Yo esperaría diferentes proporciones, así que por favor ayúdame a entender.