`
only_java
  • 浏览: 112403 次
  • 性别: 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

相关推荐

    Java多线程测试程序,

    在Java中,可以使用Thread的join()方法等待线程结束,或者设置Daemon线程使其在所有非Daemon线程结束后自动终止。在适当的时候,还需要优雅地终止线程,防止资源泄漏。 总之,"Java多线程测试程序"结合了多线程和...

    java多线程测试实例

    以下是对"java多线程测试实例"的详细解析: 1. **线程的创建方式** - 实现`Runnable`接口:创建一个类实现`Runnable`接口,然后将其实例传递给`Thread`类的构造函数创建线程。 - 继承`Thread`类:创建一个类直接...

    Thread 线程 java编程 亲手测试了的

    ### 六、守护线程(Daemon) 守护线程通常用于后台服务,如垃圾收集器。当所有非守护线程结束后,即使还有守护线程在运行,JVM也会退出。可以通过`setDaemon(true)`设置线程为守护线程。 通过深入理解并熟练运用...

    Java多线程编程实例全书随书代码.rar

    - **Daemon线程**:后台线程,当所有非守护线程结束后,守护线程也会自动终止。 8. **线程中断** - **interrupt()与isInterrupted()**:线程可以通过中断标识来停止自身或检查是否被中断。 9. **线程优先级** -...

    创建线程类轻松实现线程管理

    - **守护线程**:守护线程(Daemon Thread)是一种不会阻止程序退出的线程,如垃圾收集器就是守护线程。当所有非守护线程结束时,程序会自动退出,即使还有守护线程正在运行。 - **Join方法**:允许一个线程等待另...

    JAVA 线程中启动线程

    在Java编程语言中,线程是程序执行的基本单元,它允许程序并发地执行多个任务。在多线程环境中,程序的...在编写`test`这样的示例时,你可以创建并启动线程,测试各种线程控制和同步方法,从而加深对Java线程的理解。

    JAVA多线程教材

    守护线程(Daemon Thread)是一种特殊类型的线程,当它是系统中唯一运行的线程时,JVM会自动退出。 5. **并发集合与并发工具类**:Java提供了一系列并发友好的集合,如ConcurrentHashMap、CopyOnWriteArrayList等,...

    java常见面试题---线程篇

    面试中,线程问题经常被用来测试候选人的并发处理能力和对Java内存模型的理解。以下是一些关于Java线程的常见面试知识点,这些内容可能出现在线程.doc文档中: 1. **线程的创建方式**: - 实现`Runnable`接口:...

    自学测试类,包含设计模式,多线程等处理样例

    除了上述内容,学习Java多线程还需要了解守护线程(Daemon Thread)、线程池(ThreadPoolExecutor)和并发集合(如ConcurrentHashMap、ConcurrentLinkedQueue等),这些都是高效处理并发问题的重要工具。 综上所述...

    详解Java线程-守护线程与用户线程

    Java中的线程可以分为守护线程(DaemonThread)和用户线程(UserThread)两类。守护线程和用户线程的唯一区别是它们对虚拟机的退出(程序的终止)的影响。 当JVM中只有守护线程时,虚拟机会退出,程序终止;而当JVM中至少...

    攻克多线程时碰到的难题

    - **守护线程(Daemon)**:守护线程不会阻止程序的退出,只有当所有的非守护线程结束时,JVM才会退出。通过setDaemon(true)将线程设置为守护线程。 - **线程池(ThreadPool)**:通过Executor框架管理线程,避免...

    Bumblebee daemon and client rewritten in C.zip

    在测试和调试阶段,开发者需要确保daemon和client的兼容性和稳定性。这涉及到全面的单元测试、集成测试和系统测试,确保在各种场景下都能正常工作。此外,由于是底层系统组件,安全性也是一个重要的考虑因素,需要...

    Java高级特性 - 多线程练习题.zip

    在这个"Java高级特性 - 多线程练习题.zip"中,我们可以看到两个文件,分别是"顺序输出.txt"和"售票窗口.txt",它们很可能是用来展示或测试多线程编程概念的例子。 1. **线程的创建与启动** Java中创建线程主要有两...

    进程线程的一些特点、信号、守护进程线程的一些锁、条件变量等知识

    守护进程(Daemon)是长时间运行且独立于控制终端的特殊进程,通常用于后台服务,例如网络服务、日志记录等。它们通过调用`setsid()`函数来脱离控制终端,并通常在启动时关闭标准输入、输出和错误流。守护进程通常以...

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

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

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

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

    COSBench测试工具

    - **设置步骤**:下载COSBench压缩包(如0.4.2.c3),解压后按照官方文档配置测试控制器和工作线程,指定RadosGW的相关参数。 - **执行测试**:启动COSBench,运行预设的测试计划,记录并分析测试结果。 **4. 结果...

    Fortune Daemon-开源

    这些源代码文件共同构成了"Fortune Daemon"的核心功能,展示了其在分布式系统、网络通信、多线程处理以及模拟测试等多个方面的技术应用。开源软件的优势在于,用户不仅可以自由地使用这些代码,还可以根据自身需求...

    汪文君高并发编程实战视频资源全集

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

Global site tag (gtag.js) - Google Analytics