关于守护线程

public class Daemon implements Runnable {

Thread A,B;

public Daemon() {

A = new Thread(this);

B = new Thread(this);

}

@Override

public void run() {

Thread t = Thread.currentThread();

if(t == A){

for (int i = 0; i < 8; i++) {

System.out.println("i = " + i);

// try {

// Thread.sleep(1000);

// } catch (InterruptedException e) {}

}

}else if(t == B){

while(true){

System.out.println("线程B是守护线程");

// try {

// Thread.sleep(1000);

// } catch (InterruptedException e) {}

}

}

}


}

为什么程序的运行结果是无数个 "线程B是守护线程",而另一个线程A并没有执行呢

慕粉3291149
浏览 1475回答 3
3回答

逆光之羽

你的代码没有问题啊?思路应该也是对的 我拿你的代码执行出来A线程正常执行 B线程作为守护线程也是程序执行完后停止了你确定你跑的时候A线程没执行?orz

慕的地8582982

ZLRPJMSIYBFZCIRRREQQANWDUAXUYJJFIJYROHIMMCGPVESBMMFVWFWZUXXUUZZYAHJGTUUBHXHIWPITDDABPSSDREHYFPQAMFWMJNUVLIIBDJORRFWDGODNSIORONKRAEYBYFRTDRRREOUVPMPTANKRKFBVWZTQRLESPJAMZGGXXGGNZNQBZWMUXVGFFSMTDHBOIQYQTDAXLFOIWSSYSZGMMLSJLPCHVDKNQRRHBBLTKSIBFIHXXHMDYRKBIOKOKERXNTQUCJMDDKHCBDHIOBYVJXATLYCKLETWJDMRRLHBECXQKLPABIEYYPDGZNHNKANENSBLIFUAXGBVBFLFDUFFZZOBKHOTJVVFFPSVFFTHLIVFCPZYSXNERUKPATDYPFCFPQEBCZTUQDZGRGBLLIRPCNEDJOUEFWOVZMZJGEPDNLSZPWLMXDYFLPVCXVMDVMDNYFUIGRHHFCAOSZDIPJZYFBBYMKXDOERFMIJDXLJHXFCJDNAKECSZMGNPIHFHEVDNLJJEUZKEUBKLMZMZWIJRAVPKXDNSIHVSGRYPCJTOCWCTCOEIFTMKYOFFPIIFTDYBLJDGSYLGLCZRVSDVOBVQTHAIXKCFMQKEBIPCSZZQTNRQPHNQCFGQKKZPMVDHHXYEBCCRVCMRHMXNOESTDNXOSVTNDNOMWGEOIZQGUKCMGNIVOPFNEARAHAQRXHFGTNBYSHBJTEVZZFLAERJZXXUKEVGNYVFCGAFAQTOIIIHYAEOVPAYZPCGVMVCQAXYXCBQRURLTQXXBSQJHVPCZLFIYZDKAEOIWGNXCWZJNHYAJHBIQKXCSAIBZDUPTEYTNDNBKXYRMSJHENGGICRYSCUBKIPVFSFQNYGWLLQVMTNKBRIFP

逆光之羽

执行的线程的部分的代码怎么写的?应该是你while(true)造成死循环的原因吧?就算你执行代码打算把Daemon跑上多次,第一次进入else if(t == B){ while(true){}}这个判断条件之后程序就卡死在里面了,一直输出"线程B是守护线程"也是正常的吧老实说你这代码的思路没看懂orz 只能猜个大概
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java