请考虑以下代码段
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的东西吗?
答案 0 :(得分:2)
您正在调用currentThread()
的静态Thread
方法,该方法返回当前线程(因此名称)。然后你设置它的名字。
这段代码并不神奇(除了currentThread()
是一种原生方法)。
答案 1 :(得分:0)
JVM如何知道我的意思是主线程而不是任何其他线程?
名称" currentThread"有点用词不当。它可以追溯到大多数计算机只有一个CPU的时间,因此只有一个线程--- 当前线程 - 可以在任何给定时间运行。
在我的笔记本电脑上,可能有八个"当前"线程,在一个大型主机上,可能有一百多个。这些天Thread.currentThread()
所做的是返回称为该方法的任何线程的身份。
答案 2 :(得分:0)
currentThread( )
是Thread
类的公共静态成员。它的一般形式是:
static Thread currentThread( )
此方法返回对其调用的线程的引用。
可以使用类名称如下来调用静态方法而无需创建类的实例:
ClassName.staticMethod( )
由于currentThread( )
是静态成员方法,因此无需创建Thread
类的实例即可直接使用它。