JAVA主线程结束和子线程结束之间的关系
- main线程是一个非守护线程,不能设置成守护线程
main线程是由java虚拟机在启动额时候创建的。mian方法开始执行的时候,主线程已经创建好并运行了。
public static void main(String[] args) {
System.out.println("parent is begin");
Thread.currentThread().setDaemon(true);
}
输出:
parent is begin
Exception in thread "main" java.lang.IllegalThreadStateException
at java.lang.Thread.setDaemon(Thread.java:1359)
测试可得,运行中的主线程,调用setDaemon(true);会抛异常。
- mian线程结束,其他线程一样可以运行
主线程只是一个普通的非守护线程,用来启动应用程序,不能设置成守护线程
class Children extends Thread{
private String name;
public Children(String name){
this.name = name;
}
@Override
public void run(){
System.out.println(this.name + "---chrild thread begin");