Une autre option estThread.sleep(Duration.ofSeconds(s).toMillis())
cambunctious le
Réponses:
122
TimeUnit.SECONDS.sleep(x)appellera Thread.sleep. La seule différence est la lisibilité et l'utilisation TimeUnitest probablement plus facile à comprendre pour des durées non évidentes (par exemple: Thread.sleep(180000)vs. TimeUnit.MINUTES.sleep(3)).
Pour référence, voir ci-dessous le code de sleep()dans TimeUnit:
Je suis d'accord. Si vous souhaitez déclarer votre temps de sommeil une constante que vous pouvez modifier plus tard, par exemple de 1 minute à 10 secondes, une solution est public static final long SLEEPING_TIME = TimeUnit.MINUTES.toMillis(1);. Cela permet Thread.sleep()mais maintient l'avantage de lisibilité de TimeUnit.
Ole VV
8
Ce sont les mêmes. Je préfère cette dernière car il est plus descriptif et permet de choisir l' unité de temps (voir TimeUnit): DAYS, HOURS, MICROSECONDS, MILLISECONDS, MINUTES, NANOSECONDS, SECONDS.
argumentatif: je préfère le premier - je veux que le fil de discussion s'endorme, pas le SECONDSou MILLISECONDS[:-)
user85421
3
@CarlosHeuberger: eh bien, vous pouvez le lire comme sleep for xSECONDS , mais c'est sûrement une question de goût. D'autre part, notez que la méthode sleep()est staticactivée Thread- on pourrait donc dire qu'il n'est pas clair quel fil est censé dormir (qu'est-ce que cela Thread myThread = ...; myThread.sleep()signifie?)
Tomasz Nurkiewicz
6
@CarlosHeuberger serait beaucoup mieux de pouvoir écrireThread.sleep(3, TimeUnit.SECONDS)
assylias
Mise à jour pour éliminer toute confusion sur l'équivalence en raison des unités choisies
Rachel
@assylias Je suis d'accord, mais je ne suis malheureusement pas en mesure de le modifier [: - |
Thread.sleep(Duration.ofSeconds(s).toMillis())
Réponses:
TimeUnit.SECONDS.sleep(x)
appelleraThread.sleep
. La seule différence est la lisibilité et l'utilisationTimeUnit
est probablement plus facile à comprendre pour des durées non évidentes (par exemple:Thread.sleep(180000)
vs.TimeUnit.MINUTES.sleep(3)
).Pour référence, voir ci-dessous le code de
sleep()
dansTimeUnit
:la source
public static final long SLEEPING_TIME = TimeUnit.MINUTES.toMillis(1);
. Cela permetThread.sleep()
mais maintient l'avantage de lisibilité deTimeUnit
.Ce sont les mêmes. Je préfère cette dernière car il est plus descriptif et permet de choisir l' unité de temps (voir
TimeUnit
):DAYS
,HOURS
,MICROSECONDS
,MILLISECONDS
,MINUTES
,NANOSECONDS
,SECONDS
.la source
SECONDS
ouMILLISECONDS
[:-)SECONDS
, mais c'est sûrement une question de goût. D'autre part, notez que la méthodesleep()
eststatic
activéeThread
- on pourrait donc dire qu'il n'est pas clair quel fil est censé dormir (qu'est-ce que celaThread myThread = ...; myThread.sleep()
signifie?)Thread.sleep(3, TimeUnit.SECONDS)