Il n'y a pas de méthode sur les instances Thread qui corresponde à "sleep (long)".
Thread.currentThread(). Sleep (2000); compile cependant, car il existe une méthode sur la classe thread appelée sleep() avec un long argument.
Java permet cela comme une astuce temporelle du compilateur afin que les nouveaux codeurs puissent l'exécuter quand ils sont confus au sujet de l'accès statique des méthodes.
Cependant, ce que cela est en fait résolu dans le compilateur est:
Thread.sleep (2000);
Le code suivant est équivalent:
Discussion t = new Thread (new Runnable() {public void run() {// rien}}); t.sleep (2000); Comme l'a souligné une affiche (John V), cela ne fait pas dormir l'instance réelle du thread (t) - le thread actuel qui a créé l'objet thread est mis en veille.
L'avertissement existe de sorte que vous vous souvenez que vous accédez à une méthode statique d'une classe, pas une méthode d'une variable d'instance.
Le code approprié pour écrire est toujours Thread.sleep (2000); - N'accédez jamais à des méthodes statiques via une instance pour éviter toute confusion et cet avertissement.
En note: Depuis Java 5, il y a un TimeUnits et vous pouvez appeler sleep sur ceux-ci, ce qui est à mon avis beaucoup plus lisible. Par exemple. 'TimeUnit.SECONDS.sleep (2); ' –