В экземплярах Thread нет метода, соответствующего "sleep (long)".
Thread.currentThread () сон (2000). компилируется, однако, потому что в классе потока есть метод с именем sleep () с длинным аргументом.
Java допускает это как трюк времени компилятора, чтобы новые кодеры могли выполнять это, когда они не уверены в статическом доступе к методам.
Однако в компиляторе это действительно разрешается:
Thread.sleep (2000);
Следующий код также эквивалентен:
Thread t = new Thread (new Runnable () {public void run () {// ничего не делать}});
t.sleep (2000);
Как указал один из авторов (Джон V), это не приводит к тому, что фактический экземпляр потока (t) спит - текущий поток, создавший объект потока, переводится в спящий режим.
Предупреждение существует так, что вы помните, что обращаетесь к статическому методу класса, а не к методу переменной экземпляра.
Подходящий код для записи всегда Thread.sleep (2000); - никогда не обращайтесь к статическим методам через экземпляр, чтобы избежать путаницы и этого предупреждения.