后台线程是程序在运行的时候在后台提供一种通用服务的线程,当所有的非后台线程结束时,程序也就终止,同时会杀死所有的后台线程。下面的例子很好的说明这一点:
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块的语句
分享到:
相关推荐
2. **Java Native Interface (JNI) 库**:Commons Daemon使用JNI来与Windows操作系统进行交互,这包括32位和64位的动态链接库(dll文件),例如`jsvc.dll`,在64位系统下位于`amd64`目录下。 3. **配置文件**:如`...
Apache Commons Daemon是一个开源项目,它提供了在Windows和Unix操作系统上运行Java应用程序作为系统服务的能力。在Windows环境下,它通常与Procrun一起使用,Procrun是一个可执行程序,允许我们将Java应用程序配置...
虚拟光驱Daemon Tools使用方法 虚拟光驱是一种可以模拟光盘驱动器的软件,使用户可以不需要物理光盘驱动器的情况下使用光盘镜像文件。Daemon Tools是一款流行的虚拟光驱软件,本文将详细介绍Daemon Tools的使用方法...
Daemon Tools是一款著名的虚拟光驱软件,它在IT行业中被广泛使用,特别是在安装大型游戏或软件时,无需物理光驱即可运行CD/DVD镜像文件。该软件的主要功能是模拟光驱设备,允许用户加载ISO、BIN等镜像文件,极大地...
使用Daemon Tools的好处包括: 1. **速度**:由于无需物理读取光盘,虚拟光驱的访问速度远超实体光驱,尤其是在多次读取同一内容时。 2. **保护光盘**:避免了频繁插入和取出光盘导致的物理磨损。 3. **便携性**:...
"虚拟光驱DAEMON Tools的安装和简单使用" 虚拟光驱DAEMON Tools是一款功能强大且广泛使用的虚拟光驱软件,能够模拟真实的光驱设备,支持多种光盘镜像格式,包括ISO、BIN、CUE、MDS、NRG等。下面将详细介绍DAEMON ...
Daemon Tools是一款广受欢迎的虚拟光驱软件,尤其在游戏爱好者和系统管理员中有着广泛的使用。它的3.47版本是一个经典的老版本,以其小巧的体积(不到500KB)和出色的性能赢得了用户的好评。这个版本可能在很多地方...
总之,daemontools 3.4.7简体中文版是一个强大且易用的虚拟光驱工具,适合需要频繁使用ISO镜像文件的用户,无论是游戏爱好者还是系统管理员,都能从中受益。其丰富的功能、优秀的性能和中文界面,无疑提升了用户体验...
Daemon Tools是一款著名的虚拟光驱软件,它在IT领域中被广泛使用,特别是在游戏爱好者和系统管理员之间。Daemon Tools v4.0.9是该软件的一个版本,它允许用户创建虚拟CD和DVD驱动器,以便无需物理光盘即可运行软件、...
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 的残留。 "Daemon 虚拟光驱清除工具"正是针对这种情况设计的,它能够帮助用户解决卸载后虚拟光驱依然存在的问题。这个工具能够检测并消除老版本Daemon ...
在使用Daemon Tools时,用户还可以创建自己的ISO镜像文件,将光盘内容备份到硬盘上,便于随时调用。此外,软件还支持其他类型的光盘映像格式,如MDX和MDS,确保了对不同来源的光盘映像文件的全面支持。 总的来说,...
6. **日志记录**:“daemon.log”文件可能是程序运行时的日志记录,用于记录软件运行状态和错误信息,对于排查问题和优化使用体验很有帮助。 7. **安装与卸载**:Daemon Tools 3.46提供了简单的安装和卸载过程,...
在使用Daemontools时,用户可以创建并管理“服务槽”(service slots),每个服务槽对应一个独立的服务。当服务启动时,Daemontools会监控其状态,如果服务意外终止,它会尝试自动重启服务,确保服务的连续性。此外...
DAEMON Tools Lite 可以制作简单光盘映像文件和模拟 CD/DVD 光驱的最流行软件产品 功能 加载 *.mdx, *.mds/*.mdf, *.iso, *.b5t, *.b6t, *.bwt, *.ccd, *.cdi, *.bin/*.cue, *.ape/*.cue, *.flac/*.cue, *.nrg, ...
精灵虚拟光驱(Daemon Tools Lite)是一款功能强大且易于使用的虚拟光驱软件,能够模拟物理光驱,OUNT虚拟磁盘,实现文件的烧录、播放和管理。以下是 Daemon Tools Lite v4.47.1 官方中文版的安装图解和相关知识点:...
DAEMON Tools是一款经典的虚拟光驱软件,其V4.08版本特别推出了简繁体双语中文版,方便中国用户使用。这款软件在全球范围内享有很高的知名度,尤其在IT专业人士和游戏玩家中间,因其强大的功能和易用性而备受青睐。 ...
"daemon-0.8.tar.gz" 是一个在IT领域常见的压缩文件格式,它包含了名为 "daemon-0.8" 的项目或软件的源代码或资源。这个文件的命名方式表明它是一个版本号为0.8的守护进程(daemon)相关的程序。在Linux和Unix系统中...
例如,用户可以利用它进行映像文件的制作,将物理光盘的内容复制到硬盘上,形成一个便于随时使用的虚拟光盘。此外,它还支持加密光盘映像的处理,确保数据的安全性。对于游戏爱好者来说,DAEMON Tools V3.46的一个...