您的位置:首页 > 其它

线程的控制之守护线程_坦克大战帮助理解

2018-04-04 23:38 309 查看
后台线程
  public final void setDaemon(boolean on)   将该线程标记为守护线程用户线程
    对象名.setDaemon(true); // 设置守护线程
    当正在运行的线程都是守护线程时,Java虚拟机退出。该方法必须在启动线程前调用。

坦克大战帮助理解守护线程,如下图所示:



示例代码如下:

package cn.itcast_04;

/*
* 后台线程
*         public final void setDaemon(boolean on)   将该线程标记为守护线程或用户线程。
*             当正在运行的线程都是守护线程时,Java虚拟机退出。 该方法必须在启动线程前调用。
*
* 帮助理解的守护线程的案例
*         游戏:坦克大战。
*/
public class ThreadDaemonDemo {
public static void main(String[] args) {
ThreadDaemon td1 = new ThreadDaemon();
ThreadDaemon td2 = new ThreadDaemon();

td1.setName("关羽");
         td2.setName("张飞");

// 设置守护线程,在启动线程前
td1.setDaemon(true);
td2.setDaemon(true);

td1.start();
td2.start();

Thread.currentThread().setName("刘备");
         for (int x = 0; x < 5; x++) {
System.out.println(Thread.currentThread().getName() + ":" + x);
}
}
}


package cn.itcast_04;

public class ThreadDaemon extends Thread {
    @Override
     public void run() {
for (int x = 0; x < 100; x++) {
System.out.println(getName() + ":" + x);
}
}
}


程序运行的结果为:
(一种运行情况)

刘备:0
刘备:1
刘备:2
刘备:3
刘备:4
张飞:0
张飞:1
张飞:2
张飞:3
张飞:4
张飞:5
张飞:6
张飞:7
张飞:8

解释:刘备这个线程结束了(刘备阵亡了),关羽和张飞的线程也会立马结束,但是就算立马结束也需要一些时间缓冲!(即关羽和张飞抹脖子后也得抽搐几下才真正死了啊)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: