今天才知道Daemon的意思是什么?

阅读更多
这段时间在看别人的代码,其中用到了线程。有一个方法setDaemon,不知道是什么意思,于是到google上搜索了一下。
"守护线程",当setDaemon(true)的时候,说明该线程是守护线程。
守护线程: 在Java里面的定义是,如果虚拟机中只有守护线程在运行,则虚拟机退出。虚拟机中可能会同时有很多个线程在运行,只有当所有的非守护线程都结束的时候,虚拟机的进程才会结束,不管在运行的线程是不是main()线程。
public class TestDaemon implements Runnable{
	private int count=0;
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Thread a=new Thread(new TestDaemon(),"TestDaemon");	
		a.setDaemon(true);
		a.start();
	}

	@Override
	public void run() {
		// TODO Auto-generated method stub
		while(true){
			System.out.println("TestDaemon Running!!!"+count++);
		}
	}

}

当a.setDaemon(true);的时候,控制台将输出:
TestDaemon Running!!!0
TestDaemon Running!!!1
...
TestDaemon Running!!!232
如果当a.setDaemon(false);的时候,控制台将输出:
TestDaemon Running!!!0
TestDaemon Running!!!1
...
TestDaemon Running!!!232
...

实际上servlet就是一个守护线程,我们可以用下面的代码去测试:
System.out.println(Thread.currentThread().isDaemon());//输出:true

你可能感兴趣的:(虚拟机,thread,Google,Servlet)