`

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. **配置文件**:如`...

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

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

    虚拟光驱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. **便携性**:...

    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虚拟光驱...

    daemontool4.11中文完美版daemontool4.11中文完美版

    在使用Daemontools时,用户可以创建并管理“服务槽”(service slots),每个服务槽对应一个独立的服务。当服务启动时,Daemontools会监控其状态,如果服务意外终止,它会尝试自动重启服务,确保服务的连续性。此外...

    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, ...

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

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

    Daemon317 344 346 347

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

    DAEMON5.2.0.0

    1. **免费使用**:这是一个重要的亮点,DAEMON Tools Lite提供免费版,让用户无需支付任何费用就能享受其核心功能,如创建和管理虚拟驱动器。 2. **兼容性**:它支持最新的游戏镜像,这意味着用户可以在不购买物理...

    DAEMON Tools V4.10 简体中文版

    5. **无重启安装**:标题提到“不用重起就可以用”,这意味着DAEMON Tools V4.10安装后无需重启电脑即可立即使用,这对于忙碌的用户来说非常方便。 6. **兼容性**:作为x86版本,DAEMON Tools V4.10适用于32位操作...

    daemon-0.8.tar.gz

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

    DAEMON Tools3.47(虚拟光驱).rar

    DAEMON Tools 3.47就是这样一款工具,它能够在不使用物理光盘的情况下,快速便捷地访问和使用ISO、BIN等格式的光盘镜像文件。 DAEMON Tools 3.47的核心功能包括: 1. **虚拟驱动器创建**:该版本支持创建多个虚拟...

    Daemon Tools 3.46 简体中文版.rar

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

    DAEMONTools4.35.5最新汉化版

    DAEMON Tools是一款非常知名的虚拟光驱软件,其4.35.5版本是该软件的一个较新更新,提供了中文界面,使得中国用户在使用过程中更加便捷。DAEMON Tools的主要功能是模拟CD/DVD驱动器,让用户能够在没有物理光驱的情况...

    Daemon Tools v4.03 V4.03HE 汉化版

    Daemon Tools v4.03 V4.03HE 汉化版,相信经常使用虚拟光驱的人都应该记得,这是当年极其经典的一个版本。 现在的虚拟光驱越做越大,功能也越来越多,最新的版本Daemon Tools 安装后要占用硬盘50多M,然尔对一般的...

    Daemon Tools V4.03 汉化版.rar

    Daemon Tools是一款广受欢迎的虚拟光驱软件,尤其在V4.03版本中,它以其高效稳定和易于使用的特性赢得了用户的青睐。这个汉化版是针对中国用户特别优化的,解决了语言障碍问题,使得国内用户可以更加顺畅地操作和...

    daemon

    Daemon Tools是一款流行的虚拟光驱软件,它允许用户创建和管理虚拟光盘,从而在不使用物理光驱的情况下安装和运行软件、游戏等。 虚拟光驱的工作原理是模拟实际光驱的功能,通过在硬盘上创建一个虚拟的光盘镜像文件...

Global site tag (gtag.js) - Google Analytics