class SimpleThreading
{
public static void main(String... args)
{
Thread t=new Thread();
System.out.println(t.getName());
System.out.println(Thread.currentThread().getName());
t.start();
System.out.println(Thread.currentThread().getName());
}
}
在编写语句t.start() 后,它应该将当前线程打印为“Thread-0”,这是 JVM 给定的默认名称。但它会再次打印 Main。谁能消除我哪里出错的疑问?上面代码的输出是: 线程 0 主要的 主要
最佳答案
您的主要方法在 Main
线程中运行。因此,t.start()
之后的 println 语句都打印 Main
。
您的第二个线程什么都不做,因为您没有将任何 Runnable
实例传递给 Thread
构造函数。
如果将 Runnable
实例传递给 Thread
构造函数,并且 Runnable
的 run()
方法> 将包含 System.out.println(Thread.currentThread().getName());
,您将看到打印了 Thread-0
。
例如,如果你使用的是Java 8,你可以替换
Thread t=new Thread();
与
Thread t=new Thread(()->{System.out.println(Thread.currentThread().getName());});
或者您可以在 Java 8 之前的代码中编写相同的逻辑:
Thread t=new Thread(new Runnable () {
public void run () {
System.out.println(Thread.currentThread().getName());
}
});
关于java - 主线程和当前线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37804428/