我无法理解下面这个程序的行为,以及我可以看到没有线程引用我们可以在其中传递myThread参考但仍然程序正在执行请告知它是主线程正在执行这个程序
class MyThread extends Thread
{
public static void main(String [] args)
{
MyThread t = new MyThread();
t.start();
System.out.print("one. ");
System.out.print("two. ");
}
public void run()
{
System.out.print("Thread ");
}
}
输出
one. two. Thread
答案 0 :(得分:1)
该程序由两个线程组成。
这个电话:
t.start();
...将启动第二个线程,它将运行MyThread类的run
方法中的代码。
答案 1 :(得分:0)
因为当您致电t.start()
时,会执行run()
方法(您覆盖),
https://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html
start()方法:
- Causes this thread to begin execution; the Java Virtual Machine calls the run method of this thread.
答案 2 :(得分:0)
我总是发现让你的Main类扩展某些内容(在示例代码中)最多可疑的做法,因为初学者不清楚当调用main
方法时实际上还没有实例Main类(在本例中为MyThread类)。
所以我重写了这个例子,以便更清楚地了解会发生什么:
public class Main
{
public static void main(String [] args)
{
// main gets called when starting your program (which is a thread created by the JVM for free)
MyThread t = new MyThread(); // You create a new Thread here
t.start(); // You start the thread
System.out.print("one. "); // In the mean time, the main thread keeps running here
System.out.print("two. ");
}
public static class MyThread extends Thread {
@Override
public void run()
{
System.out.print("Thread ");
}
}
}