Java: Thread.currentThread (). Sleep (x) против Thread.sleep (x)

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

Thread.currentThread().sleep(x);

Затмение говорит мне использовать статический

Thread.sleep(x); 

вместо этого почему? Какие'Есть ли разница, есть ли какая-то разница в функциональности между этими двумя методами?

 les217 янв. 2010 г., 06:37
там'сСохранить действие » в Eclipse, который автоматически заменит статический доступ к членам через переменные экземпляра статическим доступом через имя класса - включите это действие сохранения и столько других действий сохранения, сколько вы согласны (например, удалите ненужные приведения, ненужные »этот', так далее.).

Ответы на вопрос(4)

Решение Вопроса

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

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

 Chii16 янв. 2010 г., 15:40
+1 к упоминанию о том, что программист может захотеть перевести определенный поток в спящий режим с помощью someThread.sleep (), чего он не делает.

Thread.currentThread().sleep(x); или путьЗатмение говорит такThread.sleep(x); Статический контекст необходим, если он в этом нуждается, поэтому мы немного задерживаемся с этим сном.

Статическая парадигма, устанавливаемая одним объектом, влияет только на этот жизненный цикл печати кучи объекта, опять же, учитывая, что статический жизненный цикл объекта не является таким уж утомительным, при необходимости его можно использовать для облегчения кодирования, но делать это осторожно, как статический печать отсылаетсяClass (например:-Class.forName(pkg.className)) как по имени а не по любомуobject которая является единственной печатной копией класса во время выполненияHEAP объем памяти.

Опять же, использование объекта также имеет свои плюсы минусы от Weak, Phantom, Strong вид ссылок ....,

Код запутан природой. Это просто способ, которым мы делаем, чтобы это работало и функциональны.

 Dev Anand Sadasivam03 дек. 2015 г., 07:23
Если говорить о потоке, - он порождается асинхронно, хотя у нас могут быть синхронные вещи в потоке. По своей природе все вещи асинхронны, хотя иногда мы находим вещи синхронные. Ничто из этого не является синхронным, даже если мы вмешиваемся в квантовую или астрономию.

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

someOtherThread.sleep(x);

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

 Kanagavelu Sugumar20 мар. 2013 г., 15:40
Вы имеете в виду, что currentThread и someOtherThread перейдут в спящий режим при выполнении этой единственной строки?someOtherThread.sleep (х);» ??
 Torque30 мар. 2013 г., 00:14
Нет. Текущий поток перейдет в спящий режим независимо от того, какой объект Thread .sleep вызывается. Вы можете'усыпить другие темы (вот так).

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

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

Ваш ответ на вопрос