Java 访问主线程,它是如何工作的?

Java 访问主线程,它是如何工作的?,java,multithreading,Java,Multithreading,考虑下面的代码片段 public class ThreadDemo{ public static void main(String[] args){ Thread t = Thread.currentThread(); t.setName("MainThread"); } } 我知道每个类都会自动扩展java.lang.Object。并且该类不扩展或实现任何其他类或接口。 我的问题是,ThreadDemo类没有扩展或实现任何接口或类,包括Thre

考虑下面的代码片段

public class ThreadDemo{
    public static void main(String[] args){
        Thread t = Thread.currentThread();
        t.setName("MainThread");
    }
}
我知道每个类都会自动扩展java.lang.Object。并且该类不扩展或实现任何其他类或接口。
我的问题是,ThreadDemo类没有扩展或实现任何接口或类,包括Thread和Runnable。
我们如何在main方法中使用类Thread访问主线程?

我是说它是怎么工作的???它与JVM有关吗?

您正在调用
Thread
的静态
currentThread()
方法,该方法返回当前线程(因此而得名)。然后你设定它的名字

这段代码没有什么神奇之处(除了
currentThread()
是一个本机方法)

JVM如何知道我指的是主线程而不是任何其他线程

“currentThread”这个名字有点用词不当。它可以追溯到一个时代,当时大多数计算机只有一个CPU,所以在任何给定的时间只有一个线程——当前线程——可以运行

在我的笔记本电脑上,可以有8个“当前”线程,而在大型主机上,可以有100多个。现在
Thread.currentThread()
所做的是返回调用该方法的任何线程的标识。

currentThread()
Thread
类的公共静态成员。它的一般形式是:

static Thread currentThread( )
此方法返回对调用它的线程的引用

可以在不创建类实例的情况下调用静态方法,使用类名,如下所示:

ClassName.staticMethod( ) 

由于
currentThread()
是一个静态成员方法,因此直接使用它,而无需创建
Thread
类的实例

你的问题对我来说毫无意义。您正在创建一个线程对象。创建对象与创建该对象的类有什么关系?您还可以创建一个列表或时间戳,或者任何没有threaddemo类实现或扩展任何接口/类的东西。错误,错误,错误#克鲁切克。我不是在创建对象。语句“Thread.currentThread();”允许您访问JVM创建的主线程我没有使用“NEW”关键字不要混淆类和当前正在执行类代码的线程。类是任何类,执行它的线程是线程。将其与获得类似于
Color c=Color.Blue的颜色进行比较-基本上是一样的。ckruczek的意思是创建一个引用。但其余的仍然有效。哈哈哈,很好的尝试@kolahghermezi。您必须了解基本的编程概念,但我没有创建主线程,我知道JVM做到了这一点。JVM如何知道我指的是主线程而不是任何其他线程??@kolahghermezi,因为你在主线程上。如果您在不同的线程上,则会返回不同的线程。因为正是该线程当前正在执行代码。谢谢@Fildor NOW I GET;-)@kolahghermezi真的没有什么可得到的。执行代码的线程(以哪个线程为准)。Thread.currentThread也在该线程上执行。所以它会自动返回,就这样。