守护线程

Java的线程分为两种:User Thread(用户线程)、DaemonThread(守护线程)。

守护线程:守护线程指提供某种服务的线程,当系统中只有此线程时,程序就终止了。

将线程转换为守护线程可以通过调用Thread对象的setDaemon(true)方法来实现。

在Daemon线程中产生的新线程也是Daemon的。

守护线程应该永远不去访问固有资源,如文件、数据库,因为它会在任何时候甚至在一个操作的中间发生中断。

thread.setDaemon(true)必须在thread.start()之前设置

例子

 1 public static void main(String[] args) {
 2         // TODO Auto-generated method stub
 3         Thread t1 = new Thread(){
 4             public void run(){
 5                 try {
 6                     Thread.sleep(1000);
 7                 } catch (InterruptedException e) {
 8                     // TODO Auto-generated catch block
 9                     e.printStackTrace();
10                 }
11                 for(int i=0; i<1000; i++){
12                     System.out.println("守护线程");
13                 }
14             }
15         };
16         Thread t2 = new Thread(){
17             public void run(){
18                 try {
19                     Thread.sleep(1000);
20                 } catch (InterruptedException e) {
21                     // TODO Auto-generated catch block
22                     e.printStackTrace();
23                 }
24                 for(int i=0; i<5; i++){
25                     System.out.println("非守护线程");
26                 }
27             }
28         };
29         
30         t1.setDaemon(true);//t1设置为守护线程
31         t1.start();
32         t2.start();
33     }

结果:

//结果守护线程并不会执行1000次,非守护线程结束后,守护线程随之结束,守护线程可以作为服务存在,典型应用时垃圾回收器

 1 非守护线程
 2 非守护线程
 3 非守护线程
 4 非守护线程
 5 非守护线程
 6 守护线程
 7 守护线程
 8 守护线程
 9 守护线程
10 守护线程
11 守护线程
12 守护线程
13 守护线程
14 守护线程
15 守护线程
16 守护线程
17 守护线程
18 守护线程
19 守护线程

 

posted @ 2019-04-03 15:05  大尾巴贝贝  阅读(169)  评论(0编辑  收藏  举报