Otra opción esThread.sleep(Duration.ofSeconds(s).toMillis())
cambunctious
Respuestas:
126
TimeUnit.SECONDS.sleep(x)llamará Thread.sleep. La única diferencia es la legibilidad y el uso TimeUnitprobablemente sea más fácil de entender para duraciones no obvias (por ejemplo: Thread.sleep(180000)vs.TimeUnit.MINUTES.sleep(3) ).
Para referencia, vea a continuación el código de sleep()en TimeUnit:
publicvoidsleep(long timeout)throws InterruptedException {
if (timeout > 0) {
long ms = toMillis(timeout);
int ns = excessNanos(timeout, ms);
Thread.sleep(ms, ns);
}
}
Estoy de acuerdo. Si desea declarar su tiempo de sueño como una constante que puede cambiar más tarde, digamos, de 1 minuto a 10 segundos, una solución es public static final long SLEEPING_TIME = TimeUnit.MINUTES.toMillis(1);. Esto permite, Thread.sleep()pero mantiene la ventaja de legibilidad de TimeUnit.
Ole VV
8
Ellos son iguales. Yo prefiero este último porque es más descriptivo y permite elegir la unidad de tiempo (ver TimeUnit): DAYS, HOURS, MICROSECONDS, MILLISECONDS, MINUTES, NANOSECONDS, SECONDS.
argumentativo: prefiero el primero - quiero que el hilo duerma, no el SECONDSo MILLISECONDS[:-)
user85421
3
@CarlosHeuberger: bueno, puedes leerlo como sueño para xSECONDS , pero seguro que es cuestión de gustos. Por otro lado, tenga en cuenta que el método sleep()está activado, staticpor Threadlo que se podría argumentar que no está claro qué hilo se supone que debe dormir (¿qué Thread myThread = ...; myThread.sleep()significa?)
Tomasz Nurkiewicz
6
@CarlosHeuberger Sería mucho mejor poder escribirThread.sleep(3, TimeUnit.SECONDS)
assylias
Actualizado para eliminar cualquier confusión acerca de la equivalencia debido a las unidades elegidas
Rachel
@assylias Estoy de acuerdo, pero desafortunadamente no puedo cambiarlo [: - |
Thread.sleep(Duration.ofSeconds(s).toMillis())
Respuestas:
TimeUnit.SECONDS.sleep(x)
llamaráThread.sleep
. La única diferencia es la legibilidad y el usoTimeUnit
probablemente sea más fácil de entender para duraciones no obvias (por ejemplo:Thread.sleep(180000)
vs.TimeUnit.MINUTES.sleep(3)
).Para referencia, vea a continuación el código de
sleep()
enTimeUnit
:public void sleep(long timeout) throws InterruptedException { if (timeout > 0) { long ms = toMillis(timeout); int ns = excessNanos(timeout, ms); Thread.sleep(ms, ns); } }
fuente
public static final long SLEEPING_TIME = TimeUnit.MINUTES.toMillis(1);
. Esto permite,Thread.sleep()
pero mantiene la ventaja de legibilidad deTimeUnit
.Ellos son iguales. Yo prefiero este último porque es más descriptivo y permite elegir la unidad de tiempo (ver
TimeUnit
):DAYS
,HOURS
,MICROSECONDS
,MILLISECONDS
,MINUTES
,NANOSECONDS
,SECONDS
.fuente
SECONDS
oMILLISECONDS
[:-)SECONDS
, pero seguro que es cuestión de gustos. Por otro lado, tenga en cuenta que el métodosleep()
está activado,static
porThread
lo que se podría argumentar que no está claro qué hilo se supone que debe dormir (¿quéThread myThread = ...; myThread.sleep()
significa?)Thread.sleep(3, TimeUnit.SECONDS)