线程-守护线程

1.java语言中线程分为两大类

一类是:用户线程
一类是:守护线程(后台线程)

2.守护线程的特点

一般的守护线程是一个死循环,所有的用户线程结束后,守护线程自动结束

3.守护线程怎么实现?

将一个死循环线程设置为守护线程就可以了,用setDaemon()方法。
举个例子(先是未设置为守护线程的线程):

public  class Main1{
	   
	public static void main(String[] args) {
		Datathread t=new Datathread();
		t.setName("守护线程");
		t.start();
		
		//主线程,是用户线程
		for(int i=0;i<5;i++){
			System.out.println(Thread.currentThread().getName()+"-->"+i);
			try{
				Thread.sleep(1000);
			}catch(InterruptedException e){
				e.printStackTrace();
			}
		}
	}
}
class Datathread extends Thread{
	public void run(){
		int i=0;
		//即使是死循环,但是只要用户线程结束,守护线程就跟着结束
		while(true){
			System.out.println(Thread.currentThread().getName()+"-->"+i);
			try{
				Thread.sleep(1000);
			}catch(InterruptedException e){
				e.printStackTrace();
			}
			i++;
		}
	}
}
	

结果就是main线程执行完后,t线程还在继续,成为死循环
而(将线程设为守护线程后)

public  class text2{
	   
	public static void main(String[] args) {
		Datathread t=new Datathread();
		t.setName("守护线程");
		t.setDaemon(true);
		t.start();
		
		//主线程,是用户线程
		for(int i=0;i<5;i++){
			System.out.println(Thread.currentThread().getName()+"-->"+i);
			try{
				Thread.sleep(1000);
			}catch(InterruptedException e){
				e.printStackTrace();
			}
		}
	}
}
class Datathread extends Thread{
	public void run(){
		int i=0;
		//即使是死循环,但是只要用户线程结束,守护线程就跟着结束
		while(true){
			System.out.println(Thread.currentThread().getName()+"-->"+i);
			try{
				Thread.sleep(1000);
			}catch(InterruptedException e){
				e.printStackTrace();
			}
			i++;
		}
	}
}

主线程结束,t线程也跟着结束

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值