System.out.println(getName());
}
}
}
System.out.println(getName());
}
}
}
编译运行:

可见打印出了线程的名称,其中Thread-0是系统自动分配的。
我们在main函数中先创建一个MyThread类的对象mt,启动线程,然后打印输出获得主函数线程的语句,然而运行程序先输出主函数线程名称,后输出MyThread类的对象启动的线程名称。
这是因为,当运行程序时,先执行主函数方法所在线程,系统为其分配一个时间片,而当主函数执行到mt.start();时并没有用完时间片,所以先输出了main函数的线程名称,然后mt.start();执行,执行mt的方法run所在线程。
Thread类的setDaemon方法设置线程是否为后台线程,只有一个布尔型参数,true表示时后台线程。
setDaemon方法必须在线程启动之前调用:

class MultiThread...{
public static void main(String[] args)...{
MyThread mt=new MyThread();
mt.setDaemon(true); //设置线程mt是为后台线程
mt.start();
int index=0;
while(true)...{
if(index++==5)...{
break;
}