`

Daemon的使用

阅读更多
后台线程是程序在运行的时候在后台提供一种通用服务的线程,当所有的非后台线程结束时,程序也就终止,同时会杀死所有的后台线程。下面的例子很好的说明这一点:
public class SimpleDaemons implements Runnable{
	
	@Override
	public void run() {
		// TODO Auto-generated method stub
		while(true)
		{

			try {
				TimeUnit.MILLISECONDS.sleep(100);
				System.out.println(Thread.currentThread()+" "+this);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
		}
	}
	
	public static void main(String[] args)
	{
		for(int i=0;i<10;i++)
		{
			Thread deamon=new Thread(new SimpleDaemons());
			deamon.setDaemon(true);
 //注意这个地方一定要放在线程启动之前设置,否则会抛出异常java.lang.IllegalThreadStateException,并且不会起作用

//即便是这里启动了10个线程,且每个线程都是一个死循环,但是这10个都是后台线程,主线程的运行时间却很短,所以后台线程很快也会结束,不会一直执行
			deamon.start();
		}
		
		System.out.println("SimpleDaemons.main()");
		try {
			TimeUnit.MILLISECONDS.sleep(175);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

=========================================
如果一个线程被设置成了后台模式,这个线程派生出许多子线程,那么这些子线程也是后台线程,即便它们没有显示地设置成后台模式
public class DaemonSpawn implements Runnable{
	@Override
	public void run() {
		// TODO Auto-generated method stub
		while(true)
		{
			Thread.yield();
		}
	}

}
===========================
public class Daemon implements Runnable{
         //这里派生出10个子线程
	private Thread[] t=new Thread[10];
	
	@Override
	public void run() {//每次启动主线程时 10个子线程也将启动
		// TODO Auto-generated method stub
		for(int i=0;i<10;i++)
		{
			t[i]=new Thread(new DaemonSpawn());
			t[i].start();
			System.out.println("DaemonSpawn "+i+" started!");
		}
		
		for(int i=0;i<t.length;i++)
		{     

			System.out.println("t["+i+"].isDaemon="+t[i].isDaemon());//判断县城是否为后台线程
		}
		
		while(true)
		{
			Thread.yield();
		}
	}

}



================
public class Daemons {

	public static void main(String[] args)
	{
	
		Thread d=new Thread(new Daemon());
		d.setDaemon(true);
		d.start();
		System.out.println("d.isDaemon()="+d.isDaemon());
		try {
			TimeUnit.SECONDS.sleep(1);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
-----------执行结果如下:
d.isDaemon()=true
DaemonSpawn 0 started!
DaemonSpawn 1 started!
DaemonSpawn 2 started!
DaemonSpawn 3 started!
DaemonSpawn 4 started!
DaemonSpawn 5 started!
DaemonSpawn 6 started!
DaemonSpawn 7 started!
DaemonSpawn 8 started!
DaemonSpawn 9 started!
t[0].isDaemon=true
t[1].isDaemon=true
t[2].isDaemon=true
t[3].isDaemon=true
t[4].isDaemon=true
t[5].isDaemon=true
t[6].isDaemon=true
t[7].isDaemon=true
t[8].isDaemon=true
t[9].isDaemon=true



==========================
当主线程结束时,后台线程会立即结束,甚至可能不会执行finally字句的内容
class ADaemon implements Runnable{
   public void run(){
      try{
      print("XXXXXX");
      TimeUnit.SECONDS.sleep(1);
     }catch(Exception ex){
     }finally{
     print("finally...");
     }
   }
}
====在main函数里面直接测试这个线程,并设置为后台线程就不会执行finally块的语句



分享到:
评论

相关推荐

    commons-daemon-1.0.15

    2. **Java Native Interface (JNI) 库**:Commons Daemon使用JNI来与Windows操作系统进行交互,这包括32位和64位的动态链接库(dll文件),例如`jsvc.dll`,在64位系统下位于`amd64`目录下。 3. **配置文件**:如`...

    commons daemon在windows操作系统上的使用方法

    Apache Commons Daemon是一个开源项目,它提供了在Windows和Unix操作系统上运行Java应用程序作为系统服务的能力。在Windows环境下,它通常与Procrun一起使用,Procrun是一个可执行程序,允许我们将Java应用程序配置...

    虚拟光驱Daemon Tools使用方法.docx

    虚拟光驱Daemon Tools使用方法 虚拟光驱是一种可以模拟光盘驱动器的软件,使用户可以不需要物理光盘驱动器的情况下使用光盘镜像文件。Daemon Tools是一款流行的虚拟光驱软件,本文将详细介绍Daemon Tools的使用方法...

    Daemon_Tools Daemon_Tools

    Daemon Tools是一款著名的虚拟光驱软件,它在IT行业中被广泛使用,特别是在安装大型游戏或软件时,无需物理光驱即可运行CD/DVD镜像文件。该软件的主要功能是模拟光驱设备,允许用户加载ISO、BIN等镜像文件,极大地...

    daemon.rar daemon.rar

    使用Daemon Tools的好处包括: 1. **速度**:由于无需物理读取光盘,虚拟光驱的访问速度远超实体光驱,尤其是在多次读取同一内容时。 2. **保护光盘**:避免了频繁插入和取出光盘导致的物理磨损。 3. **便携性**:...

    虚拟光驱DAEMON Tools的安装和简单使用

    "虚拟光驱DAEMON Tools的安装和简单使用" 虚拟光驱DAEMON Tools是一款功能强大且广泛使用的虚拟光驱软件,能够模拟真实的光驱设备,支持多种光盘镜像格式,包括ISO、BIN、CUE、MDS、NRG等。下面将详细介绍DAEMON ...

    Daemon Tools 3.47 英文版

    Daemon Tools是一款广受欢迎的虚拟光驱软件,尤其在游戏爱好者和系统管理员中有着广泛的使用。它的3.47版本是一个经典的老版本,以其小巧的体积(不到500KB)和出色的性能赢得了用户的好评。这个版本可能在很多地方...

    daemontools 3.4.7简体中文

    总之,daemontools 3.4.7简体中文版是一个强大且易用的虚拟光驱工具,适合需要频繁使用ISO镜像文件的用户,无论是游戏爱好者还是系统管理员,都能从中受益。其丰富的功能、优秀的性能和中文界面,无疑提升了用户体验...

    Daemon Tools v4.0.9

    Daemon Tools是一款著名的虚拟光驱软件,它在IT领域中被广泛使用,特别是在游戏爱好者和系统管理员之间。Daemon Tools v4.0.9是该软件的一个版本,它允许用户创建虚拟CD和DVD驱动器,以便无需物理光盘即可运行软件、...

    DaemonTools4.09 虚拟光驱

    5. **游戏和软件安装**:许多游戏和软件需要光盘才能安装或运行,使用Daemon Tools可以避免频繁插入光盘,且不受物理光驱限制,便于备份和恢复。 6. **安全**:虚拟光驱不会损坏物理光盘,同时也能保护光盘免受物理...

    虚拟光驱 daemon_tools_347cn_eric

    虚拟光驱 daemon_tools_347cn_eric虚拟光驱 daemon_tools_347cn_eric虚拟光驱 daemon_tools_347cn_eric虚拟光驱 daemon_tools_347cn_eric虚拟光驱 daemon_tools_347cn_eric虚拟光驱 daemon_tools_347cn_eric虚拟光驱...

    Daemon 虚拟光驱清除工具

    这时,我们就需要使用专门的清理工具来彻底移除 Daemon Tools 的残留。 "Daemon 虚拟光驱清除工具"正是针对这种情况设计的,它能够帮助用户解决卸载后虚拟光驱依然存在的问题。这个工具能够检测并消除老版本Daemon ...

    虚拟光驱daemon3.47版

    在使用Daemon Tools时,用户还可以创建自己的ISO镜像文件,将光盘内容备份到硬盘上,便于随时调用。此外,软件还支持其他类型的光盘映像格式,如MDX和MDS,确保了对不同来源的光盘映像文件的全面支持。 总的来说,...

    Daemon Tools 3.46 简体中文版.rar

    6. **日志记录**:“daemon.log”文件可能是程序运行时的日志记录,用于记录软件运行状态和错误信息,对于排查问题和优化使用体验很有帮助。 7. **安装与卸载**:Daemon Tools 3.46提供了简单的安装和卸载过程,...

    DAEMON Tools 3.47 中文版

    DAEMON Tools Lite 可以制作简单光盘映像文件和模拟 CD/DVD 光驱的最流行软件产品 功能 加载 *.mdx, *.mds/*.mdf, *.iso, *.b5t, *.b6t, *.bwt, *.ccd, *.cdi, *.bin/*.cue, *.ape/*.cue, *.flac/*.cue, *.nrg, ...

    精灵虚拟光驱(Daemon Tools Lite) v4.47.1 官方中文版最详细的安装图解

    精灵虚拟光驱(Daemon Tools Lite)是一款功能强大且易于使用的虚拟光驱软件,能够模拟物理光驱,OUNT虚拟磁盘,实现文件的烧录、播放和管理。以下是 Daemon Tools Lite v4.47.1 官方中文版的安装图解和相关知识点:...

    DAEMON Tools V4.08简繁体双语中文版

    DAEMON Tools是一款经典的虚拟光驱软件,其V4.08版本特别推出了简繁体双语中文版,方便中国用户使用。这款软件在全球范围内享有很高的知名度,尤其在IT专业人士和游戏玩家中间,因其强大的功能和易用性而备受青睐。 ...

    daemon-0.8.tar.gz

    "daemon-0.8.tar.gz" 是一个在IT领域常见的压缩文件格式,它包含了名为 "daemon-0.8" 的项目或软件的源代码或资源。这个文件的命名方式表明它是一个版本号为0.8的守护进程(daemon)相关的程序。在Linux和Unix系统中...

    虚拟光驱-DAEMON Tools V3.46 简体中文版

    例如,用户可以利用它进行映像文件的制作,将物理光盘的内容复制到硬盘上,形成一个便于随时使用的虚拟光盘。此外,它还支持加密光盘映像的处理,确保数据的安全性。对于游戏爱好者来说,DAEMON Tools V3.46的一个...

    Daemon317 344 346 347

    Daemon Tools是一款著名的虚拟光驱软件,它在个人电脑系统中广泛使用,特别是在Windows操作系统环境下。这个压缩包包含的是Daemon Tools的四个旧版本:317、344、346和347,适用于Win9x/Me操作系统,这意味着它们...

Global site tag (gtag.js) - Google Analytics