日期:2014-05-20 浏览次数:20949 次
class MainClass {
public static void main(String[] args) {
Thread tread = new Thread() {
public void run() {
try {
while (true) {
System.out.println("thread alive.");
sleep(1000);
}
} catch (Throwable e) {
e.printStackTrace();
}
}
};
thread.start();
System.out.println("main end");
return; //如果是指System.eixt(0);,那就没办法了
}
}
------解决方案--------------------
我认为主线程结束了子线程一定跟着结束的。
------解决方案--------------------
6楼说的貌似有理,今天我也是才想到这个问题.
首先主线程在java里有没有这个概念也是个问题,system.exit是不是等于主线程退出呢?
------解决方案--------------------
缺省的,虚拟机等待所有的线程结束程序才结束。
守护线程例外,会随程序主动结束。
LZ可以用g搜一下“守护线程”
------解决方案--------------------
学习
------解决方案--------------------
我认为LZ说的方式可以实现。也就是6楼的代码。
Java的Main所在的线程启动一个新的线程以后,两个线程的优先级应该一样。
如果调用System.exit()的话,不是结束Main线程,而是结束了整个Java进程。
也就是说,你在run一个Java application的时候,这个时候系统会开一个进程
然后这个进程启动了Main线程。
Java进程确定虚拟机中没有线程运行的时候,退出进程。
或者也可以用System.exit(0);强制退出进程。
注意:Main线程和Main中启动的线程都是依赖于Java虚拟机进程的。