这是一道Java线程的问题,在eclipse上运行了下发现没有任何输出,请大神解答一下。

守护线程,两个线程的执行顺序。publicclassAextendsThread{A(){setDaemon(true);}publicvoidrun(){(newB()... 守护线程,两个线程的执行顺序。

public class A extends Thread {
A(){
setDaemon(true);
}
public void run(){
(new B()).start();
try{
Thread.sleep(60);
System.out.println("A done");
}
catch(InterruptedException x){
System.out.println("A done");
}
}
public static void main(String[]args){
A a=new A();
a.start();
}
}

class B extends Thread{
public void run(){
try{
Thread.sleep(60000);
System.out.println("B done");
}
catch(InterruptedException x){
System.out.println("B done");
}
}
}
展开
 我来答
puziguo
2016-10-16 · TA获得超过1928个赞
知道小有建树答主
回答量:884
采纳率:86%
帮助的人:793万
展开全部

因为你一开始这个程序就没有线程在执行了, A作为守护线程,发现没有任何线程执行,自动退出,根本不会执行run里面的业务代码的


也就是但这个程序还有其他线程在执行, 守护线程才会去执行run里面的代码


要实现输出, 就在main方法里面new一个B线程,让程序一开始就有一个非守护线程在执行

public static void main(String[]args){
        A a=new A();
        a.start();
        
        new B().start();
    }
更多追问追答
追问
但是您给的new B().start()这段代码写在a.start()之后,是不是可能出现:

1、a先启动,B后启动a退出,B中的run执行并输出;
2、B先启动,a后启动,a作为B的守护线程,a和B都可能输出。
我分析的对么?
追答
这有关系吗?  B里面休眠时间那么长, 无论如何AB都会输出
Wadza
2016-10-16 · TA获得超过353个赞
知道小有建树答主
回答量:156
采纳率:0%
帮助的人:107万
展开全部
代码里面全是异常处理,没有输出当然就没输出了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式