【发布时间】:2018-07-19 12:04:57
【问题描述】:
我目前正在学习 Java。当我到达课程中包含线程的地步时,我想知道为什么可以在 main 方法中调用 Thread.sleep()。
理念:Thread 类是静态的,这就是它不需要实例化的原因。 但是我想知道为什么我可以创建它的一个对象。我怎么理解?
短代码sn-p:
class MyClass{
public static void main(String [] args){
Thread trd = new Thread(new MyThread());
trd.start();
try{
Thread.sleep(1000);
}
catch (InterruptedException e) {
System.out.println("Error occured");
}
}
}
public class SuperClass{
int x = 5;
}
public class MyThread extends SuperClass implements Runnable{
public void run(){
while(x<10){
System.out.println("Hello" + x);
x++;
}
}
}
【问题讨论】:
-
其实
Thread类里面的sleep方法是静态的。 :) -
@KevinCruijssen 所以线程类不是静态的只有
sleep()方法?这就是为什么我可以通过Thread.sleep();访问它? -
@Alan
static类在 java 中甚至不存在 -
@Lino 在嵌套类中它们可以是静态的
-
@Alan 这是另一种静态。它只是意味着可以在没有封闭类的实例的情况下创建实例。不像 C# 中那样使内部类
static