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 主要 主
答案 0 :(得分:2)
您的main方法在Main
主题中运行。因此,在t.start()
打印Main
之后的两个println语句。
你的第二个线程什么也没做,因为你没有将任何Runnable
个实例传递给Thread
构造函数。
如果您将Runnable
个实例传递给Thread
构造函数,并且该run()
的{{1}}方法将包含Runnable
,那么您就可以了见System.out.println(Thread.currentThread().getName());
打印。
例如,如果您使用的是Java 8,则可以替换
Thread-0
与
Thread t=new Thread();
或者您可以在Java 8之前的代码中编写相同的逻辑:
Thread t=new Thread(()->{System.out.println(Thread.currentThread().getName());});
答案 1 :(得分:1)
代码的最后一行是在主线程中运行的。如果要打印出正在运行的线程的名称,则必须将打印输出登录在线程中。
尝试以下:
Thread t=new Thread(new Runnable() { public void run() {System.out.println(Thread.currentThread().getName()); } });
System.out.println(t.getName());
System.out.println(Thread.currentThread().getName());
t.start();
//System.out.println(Thread.currentThread().getName());
答案 2 :(得分:0)
请参阅评论以获得解释:
class SimpleThreading
{
public static void main(String... args) // main thread starts.
{
Thread t=new Thread(); // new thread object is created. (This is similar to any other java object). No thread created yet.
System.out.println(t.getName()); // Prints the default name
System.out.println(Thread.currentThread().getName()); // This line is executed by main thread. hence prints main
t.start(); // Now, thread is created in runnable state
System.out.println(Thread.currentThread().getName()); // This line is executed by main thread. hence prints main
}
}