java中的后台线程

一.  java中的后台线程:

      java线程大家都不陌生,可以用继承Thread类或者实现Runable接口来定义一个自己的线程。另外,java线程还可以分为前台线程(也称用户线程或普通线程)和后台线程(Daemon thread),本篇就是要说明这两者的区别和用法。

     1.  后台线程会随着主程序的结束而结束,但是前台进程则不会;或者说,只要有一个前台线程未退出,进程就不会终止。(下面的例子会充分说明这一点);

     2.  默认情况下,程序员创建的线程是用户线程;用setDaemon(true)可以设置线程为后台线程;而用isDaemon( )则可以判断一个线程是前台线程还是后台线程;

     3. jvm的垃圾回收器其实就是一个后台线程;

     4. setDaemon函数必须在start函数之前设定,否则会抛出IllegalThreadStateException异常;

二.  例子:

public class RunnableTest implements Runnable {
private String name;
private long delay;
public static void main(String args[]) {
RunnableTest r = new RunnableTest("thread1",200);
Thread t = new Thread(r);
t.setDaemon(true);  //后台线程
t.start();
try {
System.in.read();
}
catch(Exception e) {


}
System.out.println("end main");
}
public RunnableTest(String name,long delay) {
this.name = name;
this.delay = delay;
}
public void run(){
try {
while(true) {
System.out.println(name);
Thread.sleep(delay);
}
}
catch(Exception e) {
System.out.println("Exception");
}
}
}
/*

测试结果:

case 1:     t.setDaemon(truer);   //后台线程

 thread1

thread1

thread1
......

thread1
end main


case 2:     t.setDaemon(false);   //前台线程,相当于不调用setDaemon 

 thread1

thread1

thread1

......

thread1
end main

thread1

thread1

thread1

......


*/

三.  说明:

 1.   在测试过程中,对于上面的case1中的执行,当用户按下回车键,打印完end main,随之整个程序结束,任务管理器中的进程列表中的java.exe(也就是本程序的进程)结束。

2.  对于case2的代码, 当用户按下回车键,打印完end main, 继续打印thread1, 查看任务管理器的进程列表,java.exe(也就是本程序的进程)并没有退出,直到强行结束它,进程才退出,代码也停止打印thread1。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liranke

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值