java 守护县城_java守护线程

守护线程就是标记为守护(daemon)的线程,也就是简单的调用下setDaemon()方法。Thread t = new Thread();

t.setDaemon(true);//标记为守护线程

守护线程用于后台支持任务,典型的用例是垃圾回收或者监视资源动态。守护线程将以全新的方式终止,它并不是想普通线程那样执行完自己的任务之后消亡,而是当JVM检测剩下的线程只有守护线程时也就是说普通线程已经消亡的情况下JVM就会推出,守护线程也就消亡了。守护线程提供了一种管理某些后台处理的理想方法,它们只是在支持其他非守护线程时才需要。

我依然用代码说明一切,下面看代码public class DaemonThread implements Runnable{

public void run(){

System.out.println("entering run()");

try{

System.out.println("in run() - currentThread() = " + Thread.currentThread());

while(true){

try{

Thread.sleep(500);

}catch(InterruptedException x){

}

System.out.println("in run() - woke up again");

}

}finally{

System.out.println("leaving run()");

}

}

}public class DaemonThreadMain {

public static void main(String[] args){

System.out.println("entering main");

Thread t = new Thread(new DaemonThread());

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

t.start();

//让main()线程睡眠一段时间,好让t线程可以运行

try {

Thread.sleep(3000);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

System.out.println("leaving main()");

}

}

运行结果:entering main //JVM创建main线程

entering run() //main线程睡眠,t线程进入run方法运行

in run() - currentThread() = Thread[Thread-0,5,main]

in run() - woke up again

in run() - woke up again

in run() - woke up again

in run() - woke up again

in run() - woke up again

in run() - woke up again

leaving main() //主线程睡醒,主线程结束,

//JVM忽略守护程然后退出

代码中被标记为守护线程的run方法里面是一个死循环,如果此线程是普通线程,则JVM将始终不会退出,因为有线程在运行,而上述代码中把此线程标记为守护线程,根据守护线程的定义可以退出JVM在当程序中非守护线程(本例中也就是main线程)运行结束之后,自动结束守护线程,退出JVM。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值