Java 主线程&;当前线程
在编写语句t.start()之后,它应该将当前线程打印为“thread-0”,这是JVM默认提供的名称。但是它会再次打印主线程。谁能澄清我的疑问,我错在哪里??上述代码的输出为: 线程-0 主要Java 主线程&;当前线程,java,multithreading,Java,Multithreading,在编写语句t.start()之后,它应该将当前线程打印为“thread-0”,这是JVM默认提供的名称。但是它会再次打印主线程。谁能澄清我的疑问,我错在哪里??上述代码的输出为: 线程-0 主要 Main您的Main方法在Main线程中运行。因此,两个println语句都在aftert.start()之前printMain 您的第二个线程什么也不做,因为您没有将任何Runnable实例传递给thread构造函数 如果将Runnable实例传递给Thread构造函数,那么Runnable的Runn
Main您的Main方法在
Main
线程中运行。因此,两个println语句都在aftert.start()之前
printMain
您的第二个线程什么也不做,因为您没有将任何Runnable
实例传递给thread
构造函数
如果将Runnable
实例传递给Thread
构造函数,那么Runnable
的Runnable方法将包括System.out.println(Thread.currentThread().getName())代码>,您将看到打印的线程-0
例如,如果您使用的是Java8,则可以替换
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());
}
}
与
也可以在Java 8之前的代码中编写相同的逻辑:
Thread t=new Thread(()->{System.out.println(Thread.currentThread().getName());});
代码的最后一行正在主线程中运行。如果要打印运行线程的名称,必须将打印登录名放在线程内
请尝试以下内容:
Thread t=new Thread(new Runnable () {
public void run () {
System.out.println(Thread.currentThread().getName());
}
});
有关说明,请参见注释:
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());
t.start()
将启动一个新线程。它不会影响运行main()
方法的线程,即“main”线程。结果如下所示。1.t、 getName()打印“线程-0”。2.Thread.currentThread().getName()打印“main”和3。t、 start()启动线程并调用run()方法并打印“thread-0”。结果:线程0主线程0
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());
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
}
}