只要有非deamon线程在运行,jvm就不会自动退出。比如main线程也是非deamon线程,如果一个程序中只要main,和deamon线程,假设deamon线程死循环打印一字符串,这是如果main线程结束,则deamon线程也将自动消亡!因为jvm退出了!
下面是测试实例
package test;
import java.io.IOException;
import java.io.InputStream;
public class DeamonTest implements Runnable
{
int i=0;
@Override
public void run()
{
for(;;)
{
System.out.println("time at "+i++);
try
{
Thread.sleep(1000);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
}
public static void main(String[] arg) throws IOException
{
Thread deamon=new Thread(new DeamonTest());
deamon.setDaemon(true);
deamon.start();
InputStream in=System.in;
byte[] data=new byte[1024*1024];
System.out.println("please input a string to end the main thread....");
int count=in.read(data);
byte[] read=new byte[count];
System.arraycopy(data, 0, read, 0, count);
System.out.println(new String(read));
Runtime.getRuntime().addShutdownHook(new Thread(){
public void run()
{
System.out.println("jvm exit!");
}
});
}
}
运行后,用debug可以观察到此时main线程和deamon线程正在运行。如图
当,输入一个字符串时,这时main线程结束,deamon线程也随即结束
- 大小: 20.4 KB
- 大小: 12.8 KB
分享到:
相关推荐
但是该库仅在Linux和OSX上进行了测试,因此,如果您有能力在其他平台上进行测试,请给我反馈(#26)。 请随时向我发送错误报告和修复。 非常感谢所有贡献者。 产品特点 Goroutine安全守护程序; 开箱即用的pid...
要被访问的网页放到 home/webhome 目录下编译:项目会用到其他模块lx_http lx_http lxlib lxlog ./build.sh./lxasync -husage:lxmt [-h] [--port] [--home] [--thread_num] [--daemon]--thread_num 启动的独立线程数...
│ 高并发编程第一阶段12讲、Daemon线程的创建以及使用场景分析.mp4 │ 高并发编程第一阶段13讲、线程ID,优先级讲解.mp4 │ 高并发编程第一阶段14讲、Thread的join方法详细介绍,结合一个典型案例.mp4 │ 高...
│ 高并发编程第一阶段12讲、Daemon线程的创建以及使用场景分析.mp4 │ 高并发编程第一阶段13讲、线程ID,优先级讲解.mp4 │ 高并发编程第一阶段14讲、Thread的join方法详细介绍,结合一个典型案例.mp4 │ 高...
1 2.1有关线程你必须知道的事 3 2.3volatile与Java内存模型(JMM) 2 2.2初始线程:线程的基本操作 4 2.4分门别类的管理:线程组 2java并行程序基础 5 2.5驻守后台:守护线程(Daemon) 6 2.6先做重要的事:线程...
IPFS API并发测试该存储库提供可重现的测试环境,以测量并发性能。 是基于的Web存档重播系统,它针对接收到的每个重播...运行测试假设已安装和并克隆了此存储库,请从存储库目录中运行以下命令: $ ipfs daemon --in
void daemon_init() { //clear file creation mask; umask(0); //become a session leader if (fork() != 0) exit(-1); if (setsid() ) exit(-1); //make sure can be never get the TTY control if ...
14.1.5 Daemon线程 14.2 共享有限的资源 14.2.1 资源访问的错误方法 14.2.2 Java如何共享资源 14.2.3 回顾 14.3 堵塞 14.3.1 为何会堵塞 14.3.2 死锁 14.4 优先级 14.4.1 线程组 14.5 回顾 14.5.1 过多的线程 14.6 ...
14.1.5 Daemon线程 14.2 共享有限的资源 14.2.1 资源访问的错误方法 14.2.2 Java如何共享资源 14.2.3 回顾Java Beans 14.3 堵塞 14.3.1 为何会堵塞 14.3.2 死锁 14.4 优先级 14.4.1 线程组 14.5 回顾...
14.1.5 Daemon线程 14.2 共享有限的资源 14.2.1 资源访问的错误方法 14.2.2 Java如何共享资源 14.2.3 回顾Java Beans 14.3 堵塞 14.3.1 为何会堵塞 14.3.2 死锁 14.4 优先级 14.4.1 线程组 14.5 回顾runnable ...
14.1.5 Daemon线程 14.2 共享有限的资源 14.2.1 资源访问的错误方法 14.2.2 Java如何共享资源 14.2.3 回顾Java Beans 14.3 堵塞 14.3.1 为何会堵塞 14.3.2 死锁 14.4 优先级 14.4.1 线程组 14.5 回顾runnable ...
14.1.5 Daemon线程 14.2 共享有限的资源 14.2.1 资源访问的错误方法 14.2.2 Java如何共享资源 14.2.3 回顾Java Beans 14.3 堵塞 14.3.1 为何会堵塞 14.3.2 死锁 14.4 优先级 14.4.1 线程组 14.5 回顾runnable ...
14.1.5 Daemon线程 14.2 共享有限的资源 14.2.1 资源访问的错误方法 14.2.2 Java如何共享资源 14.2.3 回顾Java Beans 14.3 堵塞 14.3.1 为何会堵塞 14.3.2 死锁 14.4 优先级 14.4.1 线程组 14.5 回顾runnable ...
14.1.5 Daemon线程 14.2 共享有限的资源 14.2.1 资源访问的错误方法 14.2.2 Java如何共享资源 14.2.3 回顾Java Beans 14.3 堵塞 14.3.1 为何会堵塞 14.3.2 死锁 14.4 优先级 14.4.1 线程组 14.5 回顾runnable ...
14.1.5 Daemon线程 14.2 共享有限的资源 14.2.1 资源访问的错误方法 14.2.2 Java如何共享资源 14.2.3 回顾Java Beans 14.3 堵塞 14.3.1 为何会堵塞 14.3.2 死锁 14.4 优先级 14.4.1 线程组 14.5 回顾runnable ...
14.1.5 Daemon线程 14.2 共享有限的资源 14.2.1 资源访问的错误方法 14.2.2 Java如何共享资源 14.2.3 回顾Java Beans 14.3 堵塞 14.3.1 为何会堵塞 14.3.2 死锁 14.4 优先级 14.4.1 线程组 14.5 回顾runnable ...
概述docs 测试 包裹 Manhole是一种进程内服务,它将接受unix域套接字连接,并显示所有线程的堆栈跟踪和交互式提示。 它可以作为工作在任何时候都Python守护线程等待连接或一个信号处理器(停止你的应用程序,并等待...
14.1.5 Daemon线程 14.2 共享有限的资源 14.2.1 资源访问的错误方法 14.2.2 Java如何共享资源 14.2.3 回顾Java Beans 14.3 堵塞 14.3.1 为何会堵塞 14.3.2 死锁 14.4 优先级 14.4.1 线程组 14.5 回顾runnable ...
14.1.5 Daemon线程 14.2 共享有限的资源 14.2.1 资源访问的错误方法 14.2.2 Java如何共享资源 14.2.3 回顾Java Beans 14.3 堵塞 14.3.1 为何会堵塞 14.3.2 死锁 14.4 优先级 14.4.1 线程组 14.5 回顾runnable ...
新的 Relic C SDK 这是 New Relic C SDK! 如果您的应用程序不使用其他 New Relic APM 代理语言,您可以使用 C SDK 来利用 New Relic 的监控功能和特性来检测各种应用... newrelic-daemon :守护程序二进制文件,准