Java: Thread.currentThread () .sleep (x) по сравнению с Thread.sleep(x)

У меня есть это в моем коде

Thread.currentThread().sleep(x);

Eclipse говорит мне использовать помехи

Thread.sleep(x); 

вместо этого, почему? Каково различие, есть ли некоторое различие в функциональности вообще между этими 2 методами?

82
задан PhiLho 16 January 2010 в 13:42
поделиться

3 ответа

Существует только один метод, не два, а это статично. Хотя вы можете вызвать статический метод через ссылку на экземпляр, это не хороший стиль. Указывает, что программист считает, что он или она называет методом экземпляра. Смущенный программист может думать, что он или она может вызвать другую нить (не текущий), чтобы спать таким образом, когда это не то, что он делает.

Обе ваши строки кода делают то же самое, но второй - лучший стиль.

130
ответ дан 24 November 2019 в 09:13
поделиться

В Java Sleep - статический метод. Обе ваши примеры делают именно то же самое, но прежняя версия сбивает с толку, потому что она выглядит так, как это называется методом на определенном объекте, но это вообще не делает. В вашем примере это не имеет значения многое, но оно опасно, если у вас есть следующее:

someOtherThread.sleep(x);

На этот раз он выглядит так, будто вы говорите спать какого-либо другого потока, но на самом деле вы помещаете текущий поток для сна. Способ избежать этого типа ошибки - всегда вызывать статические методы, используя класс, а не конкретный объект.

32
ответ дан 24 November 2019 в 09:13
поделиться

Два вызовы методов идентичны в поведении, поскольку они вызывают тот же метод, но используя нить класса ( нить в этом случае), а не экземпляра для доступа к статическим полям и способам. Вот почему это предупреждение производится.

Но учитывая, что статические поля и методы показаны определенным образом в большинстве IDE (например, в курсивом шрифте в Eclipse и Intellij Idea), это предупреждение все еще необходимо? Может быть, не так много, как было в первые дни Java, что простые редакторы были использованы.

3
ответ дан 24 November 2019 в 09:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: