51,411
社区成员
发帖
与我相关
我的任务
分享/**
* @author :jiaolian
* @date :Created in 2021-01-20 10:10
* @description:守护进程测试
* @modified By:
* 公众号:叫练
*/
public class DemoTest {
public static void main(String[] args) throws InterruptedException {
MyTask mt = new MyTask();
Thread th = new Thread(mt,"关羽");
MyTask mt2 = new MyTask();
Thread th2 = new Thread(mt,"张飞");
/* th2.setPriority(Thread.MAX_PRIORITY);
th2.setPriority(10);*/
th.setDaemon(true);
th2.setDaemon(true);
th.start();
/*th.join();*/
th2.start();
for (int i = 0;i<1;i++){
Thread.sleep(3000);
System.out.println("刘备"+i);
}
}
private static class MyTask implements Runnable {
@Override
public void run() {
for (int i=0;i<100;i++){
/*try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}*/
System.out.println(Thread.currentThread().getName()+":"+i);
/*Thread.yield();*/
}
}
}
}
根据您的代码,一共是3个线程,其中“”关羽“”,“”张飞“”为自定义线程,“”刘备“”是主线程,“”关羽“”,“”张飞“”为守护线程,也就是说“”刘备“”over后,“”关羽“”,“”张飞“”会立马over,根据您的描述,没有看到“”关羽“”,“”张飞“”执行就OVER了,也就说明了“”刘备“”over太快了,那解决办法就是让“”刘备“”over慢一些,所以如上代码第24行,刘备多活了3秒,他的兄弟也就获取了更多执行时间。希望回答对你有所帮助!