您的位置:首页 > 编程语言 > Java开发

线程的调度-守护线程

2012-08-28 11:29 92 查看
守护线程与普通线程写法上基本没有什么差别,调用线程对象的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次执行

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息