No hay ningún método en las instancias de Thread que corresponda a "sleep (long)".
Thread.currentThread(). Sleep (2000); compila, sin embargo, porque hay un método en la clase de subproceso que se llama sleep() con un argumento largo.
Java permite esto como un truco de tiempo del compilador para que los nuevos codificadores puedan ejecutar esto cuando se confunden con el acceso estático de los métodos.
Sin embargo, lo que en realidad esto se resolvió en el compilador es:
Thread.sleep (2000);
El siguiente código es también equivalente:
hilo t = new Thread (nueva Ejecutable() {public void run() {// hacer nada}}); t.sleep (2000);
Como ha señalado un afiche (John V), esto no hace que la instancia real del hilo (t) duerma: el hilo actual que creó el objeto del hilo se pone a dormir.
La advertencia existe de modo que recuerde que está accediendo a un método estático de una clase, no a un método de una variable de instancia.
El código apropiado para escribir siempre es Thread.sleep (2000); - Nunca acceda a métodos estáticos a través de una instancia para evitar confusiones y esta advertencia.
Como nota al margen: Desde Java 5, hay un TimeUnits y puede llamar a dormir en estos, lo que en mi opinión es mucho más legible. P.ej. 'TimeUnit.SECONDS.sleep (2); ' –