为什么我们需要在Java中使用Thread.sleep()而不是sleep()?

为什么我们需要在Java中使用Thread.sleep()而不是sleep()?,java,thread-sleep,Java,Thread Sleep,为什么我们必须在Java中使用Thread.sleep()而不仅仅是sleep()?是什么原因迫使开发人员使用“更长”的版本?因为sleep()是线程的静态方法。您可以静态导入它,然后使用sleep() 请看这里: 另请参见此处()了解为什么要少用静态导入。Java是一种面向对象的语言-每个方法(“函数”)都必须属于一个类,即使它是一个静态方法(例如,请考虑没有“全局”print函数-您必须调用System.out.print)。但是,如果它真的让您烦恼,您可以静态导入该方法: import

为什么我们必须在Java中使用
Thread.sleep()
而不仅仅是
sleep()
?是什么原因迫使开发人员使用“更长”的版本?

因为
sleep()
线程的静态方法。您可以静态导入它,然后使用
sleep()

请看这里:


另请参见此处()了解为什么要少用静态导入。

Java是一种面向对象的语言-每个方法(“函数”)都必须属于一个类,即使它是一个
静态
方法(例如,请考虑没有“全局”
print
函数-您必须调用
System.out.print
)。但是,如果它真的让您烦恼,您可以静态导入该方法:

import static java.lang.Thread.sleep

public class MyClass {
    public static void main (String[] args) {
        sleep (10);
    }
}
Thread
类中的
sleep()
方法是一种
static
方法。我们不使用实例对象访问
静态
方法

this.sleep()
Thread.sleep()
都是相同的,但它违反了惯例


static
关键字意味着它对所有类都是通用的,因为如果使用实例变量访问
static
方法,则不清楚

显式地让代码读者知道方法的来源。您可以使用static import来ise just sleep(),因为
sleep
Thread
的静态方法。如果Thread类被扩展。。甚至我们也可以用这个。sleep()对吗?你可以,但不应该。如果覆盖sleep()?使用Thread.sleep()或MyExtendedThread.sleep()。是的,如果它被扩展和重写,那么sleep方法的静态导入将无法正常工作?。所以,毕竟使用了Thread.sleep()似乎更好。我试过并检查了一下。您不能真正重写
sleep()
,因为它是本机方法。您可以在子类中创建静态方法
sleep()
。但它永远不会被称为。。奇怪。请看下面的答案,以获得更好的解释:
import static java.lang.Thread.sleep

public class MyClass {
    public static void main (String[] args) {
        sleep (10);
    }
}