守护进程在主线程结束时自动结束。
楼主的这个疑问是由线程t1睡眠造成。t1调用打印方法后。进入睡眠,主线程还没有结束。当然t2得到执行一次。如果想这样这样加个判断。就能看出问题的原因来了。
package what;
import java.util.Scanner;
public class DoubleText {
public static void main(String args[]){
Scanner in = new Scanner(System.in);
}
public static double getDouble(String input,double min,double max){
return 0.1;
}
}
class Test{
public static void main(String[] args) {
Thread t1 = new Thread(){
public void run() {
for (int i = 1; i <= 5; i++) {
System.out.println("A " + i);
if(i==5){ //当运行到条件结束时,直接调用系统退出,不执行睡眠。守护线程跟着结束。就不会打印B 6了
System.exit(1);
}
try {
Thread.sleep(1000);
} catch(Exception e) {
e.printStackTrace();
}
}
}
};
Thread t2 = new Thread(){
public void run() {
for (int i = 1; i <= 10; i++) {
System.out.println("B " + i);
try {
Thread.sleep(1000);
} catch(Exception e) {
e.printStackTrace();
}
}
}
};
t2.setDaemon(true);
t1.start();
t2.start();
}
}
运行结果:
A 1
B 1
A 2
B 2
A 3
B 3
B 4
A 4
A 5
B 5
|