Java线程学习整理--1--守护线程

1、什么是守护线程?

    今天老师讲解我才知道有守护线程这回事!原来守护线程经常存在于我们的身边,比如:一个免费的网页游戏,里面都会或多或少有些插入性的广告!!

一般情况下,我们不会去点击这些广告的,但是广告商是需要点击量的啊!所以制作游戏的人会背地里使用守护线程去访问这个广告界面,但是我们用户是不知道

的!就是守护线程一般对用户不可见,对背后的程序员可见!

    再比如:我们使用的QQ软件,我们可以一边聊天,一边更新QQ软件!当我们聊天结束,关闭QQ的时候,你会发现,QQ更新的操作也被终止了!

其实:更新QQ的操作就是一个守护线程操作着的!

    

2、守护线程的特点:

     主线程结束了,那么守护线程也会停止! 

/**********使用方式*****************/ HelpThread ht=new HelpThread();

ht.setDaemon(true);//设置线程为守护线程

  

3、举例说明:

 1 package cn.sxt.helpthreads;
 2 /**
 3  * 守护线程:
 4  *
 5  * 模拟:
 6  *         QQ聊天,一边聊天,一边使用QQ下载更新,当更新还未完成的时候,聊天结束,则下载也结束!
 7  * @author 小风微灵
 8  *
 9  */
10 public class HelpThread extends Thread{
11
12     public void run() {
13
14         for(int i=0;i<=100;i++){
15             System.out.println("守护线程---正在下载,进度:"+i+"%");
16             if(i==100){
17                 System.err.println("下载完成准备安装......");
18             }
19         }
20
21     }
22     public static void main(String[] args) {
23
24         HelpThread ht=new HelpThread();
25
26         ht.setDaemon(true);//设置线程为守护线程
27
28         System.err.println("下载线程是否是守护线程:"+ht.isDaemon());//true:是守护线程  false:不是守护线程
29         ht.start();
30         for(int i=0;i<=100;i++){
31             System.out.println(Thread.currentThread().getName()+"聊天中...."+i);
32
33         }
34
35     }
36
37 }

运行结果:

  1 下载线程是否是守护线程:true
  2 main聊天中....0
  3 main聊天中....1
  4 守护线程---正在下载,进度:0%
  5 main聊天中....2
  6 守护线程---正在下载,进度:1%
  7 main聊天中....3
  8 守护线程---正在下载,进度:2%
  9 main聊天中....4
 10 守护线程---正在下载,进度:3%
 11 main聊天中....5
 12 守护线程---正在下载,进度:4%
 13 守护线程---正在下载,进度:5%
 14 main聊天中....6
 15 守护线程---正在下载,进度:6%
 16 main聊天中....7
 17 守护线程---正在下载,进度:7%
 18 main聊天中....8
 19 守护线程---正在下载,进度:8%
 20 main聊天中....9
 21 守护线程---正在下载,进度:9%
 22 main聊天中....10
 23 守护线程---正在下载,进度:10%
 24 main聊天中....11
 25 守护线程---正在下载,进度:11%
 26 main聊天中....12
 27 守护线程---正在下载,进度:12%
 28 main聊天中....13
 29 守护线程---正在下载,进度:13%
 30 main聊天中....14
 31 守护线程---正在下载,进度:14%
 32 main聊天中....15
 33 守护线程---正在下载,进度:15%
 34 main聊天中....16
 35 守护线程---正在下载,进度:16%
 36 main聊天中....17
 37 守护线程---正在下载,进度:17%
 38 main聊天中....18
 39 守护线程---正在下载,进度:18%
 40 main聊天中....19
 41 守护线程---正在下载,进度:19%
 42 main聊天中....20
 43 守护线程---正在下载,进度:20%
 44 main聊天中....21
 45 守护线程---正在下载,进度:21%
 46 main聊天中....22
 47 守护线程---正在下载,进度:22%
 48 main聊天中....23
 49 守护线程---正在下载,进度:23%
 50 main聊天中....24
 51 守护线程---正在下载,进度:24%
 52 main聊天中....25
 53 守护线程---正在下载,进度:25%
 54 main聊天中....26
 55 守护线程---正在下载,进度:26%
 56 main聊天中....27
 57 守护线程---正在下载,进度:27%
 58 main聊天中....28
 59 守护线程---正在下载,进度:28%
 60 main聊天中....29
 61 守护线程---正在下载,进度:29%
 62 main聊天中....30
 63 守护线程---正在下载,进度:30%
 64 main聊天中....31
 65 守护线程---正在下载,进度:31%
 66 main聊天中....32
 67 守护线程---正在下载,进度:32%
 68 main聊天中....33
 69 守护线程---正在下载,进度:33%
 70 main聊天中....34
 71 守护线程---正在下载,进度:34%
 72 main聊天中....35
 73 守护线程---正在下载,进度:35%
 74 main聊天中....36
 75 守护线程---正在下载,进度:36%
 76 main聊天中....37
 77 守护线程---正在下载,进度:37%
 78 main聊天中....38
 79 守护线程---正在下载,进度:38%
 80 守护线程---正在下载,进度:39%
 81 守护线程---正在下载,进度:40%
 82 守护线程---正在下载,进度:41%
 83 守护线程---正在下载,进度:42%
 84 守护线程---正在下载,进度:43%
 85 守护线程---正在下载,进度:44%
 86 守护线程---正在下载,进度:45%
 87 守护线程---正在下载,进度:46%
 88 守护线程---正在下载,进度:47%
 89 守护线程---正在下载,进度:48%
 90 守护线程---正在下载,进度:49%
 91 守护线程---正在下载,进度:50%
 92 守护线程---正在下载,进度:51%
 93 守护线程---正在下载,进度:52%
 94 守护线程---正在下载,进度:53%
 95 守护线程---正在下载,进度:54%
 96 守护线程---正在下载,进度:55%
 97 守护线程---正在下载,进度:56%
 98 守护线程---正在下载,进度:57%
 99 守护线程---正在下载,进度:58%
100 守护线程---正在下载,进度:59%
101 守护线程---正在下载,进度:60%
102 守护线程---正在下载,进度:61%
103 守护线程---正在下载,进度:62%
104 守护线程---正在下载,进度:63%
105 守护线程---正在下载,进度:64%
106 main聊天中....39
107 main聊天中....40
108 main聊天中....41
109 main聊天中....42
110 main聊天中....43
111 main聊天中....44
112 main聊天中....45
113 main聊天中....46
114 main聊天中....47
115 main聊天中....48
116 main聊天中....49
117 main聊天中....50
118 main聊天中....51
119 main聊天中....52
120 main聊天中....53
121 main聊天中....54
122 main聊天中....55
123 main聊天中....56
124 main聊天中....57
125 main聊天中....58
126 main聊天中....59
127 main聊天中....60
128 main聊天中....61
129 main聊天中....62
130 守护线程---正在下载,进度:65%
131 守护线程---正在下载,进度:66%
132 守护线程---正在下载,进度:67%
133 守护线程---正在下载,进度:68%
134 守护线程---正在下载,进度:69%
135 守护线程---正在下载,进度:70%
136 守护线程---正在下载,进度:71%
137 守护线程---正在下载,进度:72%
138 守护线程---正在下载,进度:73%
139 守护线程---正在下载,进度:74%
140 守护线程---正在下载,进度:75%
141 守护线程---正在下载,进度:76%
142 守护线程---正在下载,进度:77%
143 守护线程---正在下载,进度:78%
144 守护线程---正在下载,进度:79%
145 守护线程---正在下载,进度:80%
146 main聊天中....63
147 守护线程---正在下载,进度:81%
148 守护线程---正在下载,进度:82%
149 守护线程---正在下载,进度:83%
150 守护线程---正在下载,进度:84%
151 守护线程---正在下载,进度:85%
152 守护线程---正在下载,进度:86%
153 守护线程---正在下载,进度:87%
154 守护线程---正在下载,进度:88%
155 守护线程---正在下载,进度:89%
156 main聊天中....64
157 守护线程---正在下载,进度:90%
158 main聊天中....65
159 守护线程---正在下载,进度:91%
160 main聊天中....66
161 守护线程---正在下载,进度:92%
162 main聊天中....67
163 守护线程---正在下载,进度:93%
164 main聊天中....68
165 守护线程---正在下载,进度:94%
166 main聊天中....69
167 守护线程---正在下载,进度:95%
168 main聊天中....70
169 守护线程---正在下载,进度:96%
170 main聊天中....71
171 守护线程---正在下载,进度:97%
172 main聊天中....72
173 守护线程---正在下载,进度:98%
174 main聊天中....73
175 守护线程---正在下载,进度:99%
176 main聊天中....74
177 守护线程---正在下载,进度:100%
178 main聊天中....75
179 下载完成准备安装......
180 main聊天中....76
181 main聊天中....77
182 main聊天中....78
183 main聊天中....79
184 main聊天中....80
185 main聊天中....81
186 main聊天中....82
187 main聊天中....83
188 main聊天中....84
189 main聊天中....85
190 main聊天中....86
191 main聊天中....87
192 main聊天中....88
193 main聊天中....89
194 main聊天中....90
195 main聊天中....91
196 main聊天中....92
197 main聊天中....93
198 main聊天中....94
199 main聊天中....95
200 main聊天中....96
201 main聊天中....97
202 main聊天中....98
203 main聊天中....99
204 main聊天中....100
时间: 2024-08-05 13:17:49

Java线程学习整理--1--守护线程的相关文章

JAVA并发实现四(守护线程和线程阻塞)

守护线程     Java中有两类线程:User Thread(用户线程).Daemon Thread(守护线程) 用户线程即运行在前台的线程,而守护线程是运行在后台的线程. 守护线程作用是为其他前台线程的运行提供便利服务,而且仅在普通.非守护线程仍然运行时才需要,比如垃圾回收线程就是一个守护线程.当VM检测仅剩一个守护线程,而用户线程都已经退出运行时,VM就会退出,因为没有如果没有了被守护者,也就没有继续运行程序的必要了.如果有非守护线程仍然存活,VM就不会退出. 守护线程并非只有虚拟机内部提

【Java并发编程】:守护线程与线程阻塞的四种情况

守护线程 JAVA中有两类线程:User Thread(用户线程).Daemon Thread(守护线程) 用户线程即运行在前台的线程,而守护线程是运行在后台的线程. 守护线程作用是为其他前台线程的运行提供便利服务,而且仅在普通.非守护线程仍然运行时才需要,比如垃圾回收线程就是一个守护线程.当VM检测仅剩一个守护线程,而用户线程都已经退出运行时,VM就会退出,因为没有如果没有了被守护这,也就没有继续运行程序的必要了.如果有非守护线程仍然存活,VM就不会退出. 守护线程并非只有虚拟机内部提供,用户

linux pthread和java thread的是/非守护线程的行为

pthread_xxx 的函数并没有直接提供设置一个pthread为守护线程的api 而pthread_attr_init() 和 struct pthread_attr_t 也并没有提供 线程是否被设置为守护线程的成员变量 但java 的线程对象有 setDaemon() 方法将线程设置为守护线程 那我们看看java的Thread的native层是如何实现该变量的功能的 void Thread::CreateNativeThread(JNIEnv* env, jobject java_peer

第二十八(线程的同步、守护线程、Timer 定时器)

/* 模拟ATM取款,不是线程同步机制,多线程同时对一个账户进行操作 t1 和 t2 异步编程模型:t1线程执行t1,t2线程执行的是t2,两个线程之间谁也不等于谁 同步编程模型:t1线程和t2线程执行,当t1线程必须等于t2的线程执行结果之后,t1线程才能执行 这是同步编程模型. 什么时候需要引入同步 1. 为了数据安全,尽管应用程序的使用率低,但是为了保证数据安全性,必须的加入线程同步机制 线程同步机制 使程序变成了(等同)单线程 2. 在什么条件下需要使用线程同步 <1> 必须是多线程环

java密码学学习整理--对称加密(着重描述3des)

1.对称加密要点 对称加密算法的核心是加密和解密操作使用同一套密钥.加密的安全性不仅取决于加密算法本身,密钥管理的安全性更是重要.因为加密和解密都使用同一个密钥,如何把密钥安全地传递到解密者手上就成了必须要解决的问题. 2.des(参考自:http://baike.baidu.com/view/878529.htm?from_id=210508&type=syn&fromtitle=DES&fr=aladdin) DES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位(每组的

Java线程学习整理--2---加入另一个线程join

1.join简介: 今天刚学的,这里我简单总结一下,join本身就是“加入”的意思,那么在线程中是什么意思呢?是在一个线程的run方法执行过程中,当特殊情况下需要执行一些其他的操作的时候,我们会用到join这个方法. 假设: 在执行A线程的时候,在A的run方法中,创建 了一个新的线程B,并且启动了,那么接下来分为2种情况: (1):B没有调用join方法: 这个时候A线程和B线程其实是处于同一个级别状态的,A.B线程可以说是竞争关系,共同争夺CPU的使用权限. 不存在那个一定在前执行,那个一定

Java并发学习之十八——线程同步工具之CyclicBarrier

本文是学习网络上的文章时的总结,感谢大家无私的分享. CyclicBarrier 类有一个整数初始值,此值表示将在同一点同步的线程数量.当其中一个线程到达确定点,它会调用await() 方法来等待其他线程.当线程调用这个方法,CyclicBarrier阻塞线程进入休眠直到其他线程到达.当最后一个线程调用CyclicBarrier 类的await() 方法,它唤醒所有等待的线程并继续执行它们的任务. 注意比较CountDownLatch和CyclicBarrier: 1.CountDownLatc

Java多线程学习(八)线程池与Executor 框架

Java面试通关手册(Java学习指南,欢迎Star,会一直完善下去,欢迎建议和指导):https://github.com/Snailclimb/Java_Guide 历史优质文章推荐: Java并发编程指南专栏 分布式系统的经典基础理论 可能是最漂亮的Spring事务管理详解 面试中关于Java虚拟机(jvm)的问题看这篇就够了 目录: [TOC] 本节思维导图: 思维导图源文件+思维导图软件关注微信公众号:"Java面试通关手册" 回复关键字:"Java多线程"

java多线程学习(三)——线程栈

一.线程栈模型 线程栈模型是理解线程调度原理以及线程执行过程的基础.线程栈是指某时刻时内存中线程调度的栈信息,当前调用的方法总是位于栈顶,线程栈的内容是随着线程的运行状态变化而变化的,研究线程栈必须选择一个运行的时刻(指代码运行到什么地方) 上图中的栈A是主线程main的运行栈信息,当执行new JavaThreadDemo().threadMethod();方法时,threadMethod方法位于主线程栈中的栈顶,在threadMethod方法中运行的start()方法新建立了一个线程,此时,