2010-07-24 6 views
8

Possible en double:
Java: Thread.currentThread().sleep(x) vs. Thread.sleep(x)Thread.currentThread(). Sleep (temps) v/s Thread.sleep (heure);

Quelle est la différence entre ...

Thread.currentThread().sleep(time) 

et

Thread.sleep(time); 

une chose est là anyother méthode par laquelle je peux retarder dans le programme sans utiliser la classe discussion ...

+3

Cette question est si proche de http://stackoverflow.com/questions/2077216/java-thread-currentthread-sleepx-vs-thread-sleepx qu'un plagariste éhonté a juste coupé-collé la réponse acceptée comme sa réponse à cette question. –

+0

@Stephen C c'est peut-être quelqu'un d'autre qui est sans vergogne pour poser des questions redondantes? –

+0

@Dave - @Jazz a seulement posé 2 questions, et l'autre n'était pas redondante. D'ailleurs, tout le monde sait que le plagiat est une tromperie. Les enfants apprennent cela à l'école primaire, et quiconque arrive à l'université ne peut manquer d'apprendre que c'est un gros non. –

Répondre

-3

1 - ils sont les mêmes.

2 - Thread.sleep est le seul moyen de retarder en Java, sauf si vous implémente votre propre chemin;)

+2

-1 car votre numéro de point 2 est incorrect. Voir ma réponse pour une alternative. –

7

Thread.sleep() est une méthode statique. Il n'y a aucune différence entre appeler Thread.sleep() et appeler Thread.currentThread().sleep(). Cependant, si vous utilisez eclipse, le dernier formulaire devrait vous donner un message d'avertissement lorsque vous accédez à la méthode statique sleep() de manière non statique.

TimeUnit.sleep() est une fantastique alternative à Thread.sleep(). Personnellement, je préfère parce que dans la plupart des cas, je veux dormir pendant quelques secondes entières et je peux facilement et faire clairement avec TimeUnit.SECONDS.sleep(5) par opposition à Thread.sleep(5*1000) ou Thread.sleep(5000)

Edit: Il y a encore une autre alternative, mais il est pas tous une alternative souhaitable. L'appel Object.wait() arrêtera l'exécution d'une manière similaire à Thread.sleep(). Cependant, il est déconseillé de le faire car vous devez d'abord utiliser synchronize(Object) et cette méthode est destinée à wait/notify Synchronisation des threads. De plus, il n'y a aucune garantie que le Thread attende le plein temps spécifié, car les réveils intempestifs de Object.wait() sont acceptables pour les implémentations JVM.

+0

TimeUnit exécutera lui-même Thread.sleep() à partir de l'API Java: Effectuez un Thread.sleep en utilisant cet appareil. – mhshams

+0

@Mohammad shamsi, Oui, mais l'utilisation de Object.wait() ne nécessite pas l'utilisation de la classe Thread. Strictement parlant, TimeUnit est une alternative, même si l'implémentation actuelle délègue simplement à Thread.sleep(). –