开发者社区> 黑泽明军> 正文

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

简介: 后台线程   public final void setDaemon(boolean on)   将该线程标记为守护线程或用户线程     对象名.setDaemon(true); // 设置守护线程     当正在运行的线程都是守护线程时,Java虚拟机退出。
+关注继续查看

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

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

示例代码如下:

 1 package cn.itcast_04;
 2 
 3 /*
 4  * 后台线程
 5  *         public final void setDaemon(boolean on)   将该线程标记为守护线程或用户线程。
 6  *             当正在运行的线程都是守护线程时,Java虚拟机退出。 该方法必须在启动线程前调用 7  * 
 8  * 帮助理解的守护线程的案例
 9  *         游戏:坦克大战。
10  */
11 public class ThreadDaemonDemo {
12     public static void main(String[] args) {
13         ThreadDaemon td1 = new ThreadDaemon();
14         ThreadDaemon td2 = new ThreadDaemon();
15 
16         td1.setName("关羽");
17         td2.setName("张飞");
18 
19         // 设置守护线程,在启动线程前
20         td1.setDaemon(true);
21         td2.setDaemon(true);
22 
23         td1.start();
24         td2.start();
25 
26         Thread.currentThread().setName("刘备");
27         for (int x = 0; x < 5; x++) {
28             System.out.println(Thread.currentThread().getName() + ":" + x);
29         }
30     }
31 }
 1 package cn.itcast_04;
 2 
 3 public class ThreadDaemon extends Thread {
 4     @Override
 5     public void run() {
 6         for (int x = 0; x < 100; x++) {
 7             System.out.println(getName() + ":" + x);
 8         }
 9     }
10 }
程序运行的结果为:
(一种运行情况)

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

解释:刘备这个线程结束了(刘备阵亡了),关羽和张飞的线程也会立马结束,但是就算立马结束也需要一些时间缓冲!(即关羽和张飞抹脖子后也得抽搐几下才真正死了啊)

 

我的GitHub地址:https://github.com/heizemingjun
我的博客园地址:http://www.cnblogs.com/chenmingjun
我的蚂蚁笔记博客地址:http://blog.leanote.com/chenmingjun
Copyright ©2018 黑泽明军
【转载文章务必保留出处和署名,谢谢!】

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
C++线程的简单学习及了解
C++线程的简单学习及了解
25 0
面试官:换人!他连进程、线程、协程这几个特点都说不出
在操作系统课程的学习中,很多人对进程线程有大体的认识,但操作系统教材更偏向于理论叙述,本文会结合 Linux 系统实现分析,更加印象深刻。 同时,大部分人都接触进程和线程比较多,对协程知之甚少,然而最近协程并发编程技术火热起来,希望读完本文你对协程也有一个基本的了解。 话不多说,我们马上进入本文的学习。
24 0
《我要进大厂》- Java并发 夺命连环10问,你能坚持到第几问?(进程&线程 | 并行&并发 | 上下文切换 | 线程死锁 | 线程创建)
《我要进大厂》- Java并发 夺命连环10问,你能坚持到第几问?(进程&线程 | 并行&并发 | 上下文切换 | 线程死锁 | 线程创建)
52 0
Linux多线程:线程概念、线程间的独有与共享、多线程VS多进程,线程控制:线程创建、线程终止、线程等待、线程分离
Linux多线程:线程概念、线程间的独有与共享、多线程VS多进程,线程控制:线程创建、线程终止、线程等待、线程分离
100 0
【多线程学习笔记3】线程的生命周期与控制
【多线程学习笔记3】线程的生命周期与控制
112 0
线程、进程、多线程、多进程、多任务,傻傻分不清?
可能学习嵌入式开发的读者都听说过这些专业名词,但又多少人理解了? 首先,从定义开始,先看一下教科书上 进程和线程定义
110 0
多线程基础篇(1)——初试线程
推荐书籍《Java并发编程的艺术》《Java编程思想》《Java核心技术卷一》,本文为个人学习笔记,删除一些不必要文字,并加入部分个人理解,日后复习较为简洁易懂
2290 0
+关注
黑泽明军
斯人若彩虹,遇上方知有。
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载
相关实验场景
更多