线程的调度-守护线程

守护线程与普通线程写法上基本没有什么差别,调用线程对象的setDaemon(true),可以将其设置为守护线程。

此方法的详细说明:

public final void setDaemon(boolean on) ,j将该线程标记为守护线程或用户线程,当正在运行的线程都是守护线程时,java虚拟机退出。

该方法必须在启动线程前调用。

该方法首先调用该线程的checkAccess方法,且不带任何参数,这可能抛出SecurityException(在当前线程中)

参数:on-如果为true,则将该线程标记为守护线程

抛出:IllegalThreadStateException-如果该线程处于活动状态

SecurityException-如果当前线程无法修改该线程;

另请参见:

isDeamon(),checkAccess();

package test;

public class Test {

 public static void main(String[] args) {
  Thread t1 = new MyCommon();
  Thread t2 = new Thread(new MyDaemon());
  t2.setDaemon(true);
  t2.start();
  t1.start();
 }

}
class MyCommon extends Thread{

 @Override
 public void run() {
  for(int i = 0 ; i < 10 ;i++){
   System.out.println("线程1第"+i+"次执行");
   try {
    Thread.sleep(7);
   } catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  }
  
 }
}
class MyDaemon implements Runnable{

 @Override
 public void run() {
  for(int i = 0; i < 9999999L ; i++){
   System.out.println("线程2第"+i+"次执行");
   try {
    Thread.sleep(7);
   } catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  }
 }
 
}

运行结果:

线程2第0次执行
线程1第0次执行
线程2第1次执行
线程1第1次执行
线程1第2次执行
线程2第2次执行
线程2第3次执行
线程1第3次执行
线程2第4次执行
线程1第4次执行
线程2第5次执行
线程1第5次执行
线程2第6次执行
线程1第6次执行
线程1第7次执行
线程2第7次执行
线程2第8次执行
线程1第8次执行
线程2第9次执行
线程1第9次执行
线程2第10次执行
线程2第11次执行
线程2第12次执行
线程2第13次执行
线程2第14次执行

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值