`
only_java
  • 浏览: 109755 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Deamon线程的测试

    博客分类:
  • j2se
阅读更多



 

 只要有非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
分享到:
评论
1 楼 Technoboy 2011-05-19  
daemon

相关推荐

    go-daemon:用于在golang中编写系统守护程序的库

    但是该库仅在Linux和OSX上进行了测试,因此,如果您有能力在其他平台上进行测试,请给我反馈(#26)。 请随时向我发送错误报告和修复。 非常感谢所有贡献者。 产品特点 Goroutine安全守护程序; 开箱即用的pid...

    lx_async_server:一个基于epoll的多线程 linux c http web服务器

    要被访问的网页放到 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 │ 高...

    汪文君高并发编程实战视频资源下载.txt

    │ 高并发编程第一阶段12讲、Daemon线程的创建以及使用场景分析.mp4 │ 高并发编程第一阶段13讲、线程ID,优先级讲解.mp4 │ 高并发编程第一阶段14讲、Thread的join方法详细介绍,结合一个典型案例.mp4 │ 高...

    实战Java高并发程序设计(第2版)PPT模板.pptx

    1 2.1有关线程你必须知道的事 3 2.3volatile与Java内存模型(JMM) 2 2.2初始线程:线程的基本操作 4 2.4分门别类的管理:线程组 2java并行程序基础 5 2.5驻守后台:守护线程(Daemon) 6 2.6先做重要的事:线程...

    ipfsapi-concurrency-test:具有可重现环境的IPFS API并发性能分析脚本

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

    Thinking in Java 中文第四版+习题答案

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

    Think in Java(中文版)chm格式

    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 回顾...

    Java初学者入门教学

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

    JAVA_Thinking in Java

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

    ThinkInJava

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

    java 编程入门思考

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

    thinkinjava

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

    Thinking in Java简体中文(全)

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

    java联想(中文)

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

    python-manhole:调试python应用程序的沙井

    概述docs 测试 包裹 Manhole是一种进程内服务,它将接受unix域套接字连接,并显示所有线程的堆栈跟踪和交互式提示。 它可以作为工作在任何时候都Python守护线程等待连接或一个信号处理器(停止你的应用程序,并等待...

    Thinking in Java(中文版 由yyc,spirit整理).chm

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

    JAVA_Thinking in Java(中文版 由yyc,spirit整理).chm

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

    c-sdk:新的 Relic C SDK

    新的 Relic C SDK 这是 New Relic C SDK! 如果您的应用程序不使用其他 New Relic APM 代理语言,您可以使用 C SDK 来利用 New Relic 的监控功能和特性来检测各种应用... newrelic-daemon :守护程序二进制文件,准

Global site tag (gtag.js) - Google Analytics