`
snoopy7713
  • 浏览: 1151912 次
  • 性别: Icon_minigender_2
  • 来自: 火星郊区
博客专栏
Group-logo
OSGi
浏览量:0
社区版块
存档分类
最新评论

java多线程总结二:后台线程(守护线程)

    博客分类:
  • java
阅读更多

所谓的后台线程,是指在程序运行的时候在后台提供一种通用服务的线程,并且这种线程并不属于程序中不可或缺的部分。因此当所有的非后台线程结束时,程序也就终止了,同时会杀死所有后台线程。反过来说,只要有任何非后台线程(用户线程)还在运行,程序就不会终止。后台线程在不执行finally子句的情况下就会终止其run方法。后台线程创建的子线程也是后台线程。 下面是一个后台线程的示例:

package demo.thread;

import java.util.concurrent.TimeUnit;

public class DaemonDemo implements Runnable {
	@Override
	public void run() {
		try {
			while (true) {
				Thread.sleep(1000);
				System.out.println("#" + Thread.currentThread().getName());
			}
		} catch (InterruptedException e) {
			e.printStackTrace();
		} finally {// 后台线程不执行finally子句
			System.out.println("finally ");
		}
	}

	public static void main(String[] args) {
		for (int i = 0; i < 10; i++) {
			Thread daemon = new Thread(new DaemonDemo());
			// 必须在start之前设置为后台线程
			daemon.setDaemon(true);
			daemon.start();
		}
		System.out.println("All daemons started");
		try {
			TimeUnit.MILLISECONDS.sleep(1000);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
 

运行结果:

All daemons started
#Thread-2
#Thread-3
#Thread-1
#Thread-0
#Thread-9
#Thread-6
#Thread-8
#Thread-5
#Thread-7
#Thread-4

分析:从结果可以看出,十个子线程并没有无线循环的打印,而是在主线程(main())退出后,JVM强制关闭所有后台线程。而不会有任何希望出现的确认形式,如finally子句不执行。

分享到:
评论

相关推荐

    JAVA多线程总结

    【JAVA多线程总结】 Java 多线程是Java编程中的关键特性,它允许程序同时执行多个任务,提高系统的效率和响应性。本篇总结涵盖了Java多线程的基础概念、创建与启动、线程调度、同步与协作以及新特性。 **一、Java...

    java多线程Demo

    Java多线程是Java编程中的一个重要概念,它允许程序同时执行多个任务,提高了程序的效率和响应速度。在Java中,实现多线程有两种主要方式:继承Thread类和实现Runnable接口。 1. 继承Thread类: 当我们创建一个新...

    java多线程文件传输

    - **守护线程**:守护线程在所有非守护线程结束后自动终止,常用于后台服务。 8. **监控与调试** - **JMX(Java Management Extensions)**:用于管理和监控Java应用,可以获取线程信息、内存使用等。 - **...

    Java多线程练习题

    2.守护线程(Daemon Thread):后台运行的线程,当所有非守护线程结束时,守护线程也会自动结束。 六、线程池 Java提供ExecutorService和ThreadPoolExecutor来管理线程,可以避免频繁创建和销毁线程带来的开销,...

    Java多线程编程经验

    ### Java多线程编程...#### 二十二、Java线程:大总结 Java多线程编程是Java开发中的重要部分,涉及到线程的创建、启动、同步、通信等多个方面。掌握这些基本概念和技术对于开发高效稳定的多线程应用程序至关重要。

    java多线程总结

    Java多线程是Java编程中的核心概念,它允许程序同时执行多个任务,提高了程序的效率和响应速度。本文将深入探讨Java多线程的相关知识点,包括线程的创建、线程的状态、同步机制以及线程安全问题。 1. **线程的创建*...

    JAVA-多线程 所有文件

    这个“JAVA-多线程 所有文件”压缩包很可能包含了一系列关于Java多线程学习的源代码示例和相关文档。下面我们将深入探讨Java多线程的相关知识点。 1. **线程的概念**:线程是操作系统分配CPU时间的基本单位,一个...

    Java多线程详解及示例

    Java多线程编程是提升程序性能和响应性的关键技术。理解多线程的概念,掌握线程的创建、同步、通信、死锁避免等核心知识点,以及合理使用线程池,对于编写高效、稳定的并发程序至关重要。通过实践,开发者可以更好地...

    Java多线程的经典资料.rar

    Java多线程是Java编程中的核心概念,它允许程序同时执行多个任务,极大地提升了软件的效率和并发性。这份“Java多线程的经典资料.rar”压缩包包含了一份名为“Java线程.pdf”的文档,很可能是关于Java多线程的详细...

    java多线程示例

    在Java编程语言中,多线程是核心特性之一,它允许程序同时执行多个任务,从而提高了应用程序的效率和响应...文档“java多线程实例.docx”可能包含具体的示例代码和详细解释,建议参考学习,以加深对Java多线程的理解。

    java多线程设计模式_java_设计模式_多线程_多线程课题_

    Java多线程设计模式是Java开发中的核心概念,它涉及到如何高效、安全地在多个执行线程之间共享资源和协调任务。设计模式是解决特定问题的成熟方案,它们是编程经验的结晶,可以帮助开发者在面临多线程挑战时快速找到...

    Java多线程设计模式(带源码)

    10. 守护线程模式:用于执行后台服务,如垃圾回收线程就是典型的守护线程,当所有非守护线程结束时,守护线程也会自动终止。 通过阅读提供的"Java多线程设计模式详解.pdf"和"Java多线程设计模式上传文件",开发者...

    Java多线程结构_Java多线程结构_

    Java多线程结构是Java编程中的重要组成部分,它允许程序同时执行多个任务,提升系统效率。在Java中,实现多线程主要有两种方式:继承Thread类和实现Runnable接口。 1. 继承Thread类: 当自定义类继承Thread类时,...

    【JAVA多线程】多线程编程核心技术学习资料

    Java多线程编程是Java开发中的重要组成部分,它允许程序同时执行多个任务,极大地提高了程序的效率和响应性。在现代计算机系统中,多线程技术尤其关键,因为它们能够充分利用多核处理器的能力。这份"Java多线程编程...

    java多线程控制的赛跑程序

    这个“java多线程控制的赛跑程序”是一个示例,展示了如何利用多线程来模拟一场赛跑比赛。在这个程序中,每个参赛者(线程)都有自己的运行逻辑,通过线程的并发执行来模拟实际的赛跑过程。接下来,我们将深入探讨...

    java多线程编程

    Java多线程编程是Java开发中的重要组成部分,它允许程序同时执行多个任务,提升系统效率。在本教程中,我们将深入探讨Java中的多线程设计模式、并发核心编程概念以及线程池的工作原理和种类。 首先,让我们了解什么...

    Java多线程详解(超详细)_狂神说笔记完整版_项目代码_适合小白随课程学习

    Java多线程详解 在Java编程中,多线程是一种重要的技术,它使得程序能够同时执行多个任务,提高系统的效率和响应性。本教程将详细讲解Java中的多线程概念,包括线程的创建、状态、同步以及高级主题,旨在帮助初学者...

    Java 多线程学习总结6

    在“Java多线程学习总结6”这个主题中,我们可以深入探讨Java多线程的实现、管理及优化。下面将详细阐述相关知识点。 1. **线程的创建方式** - **继承Thread类**:自定义类继承Thread类,并重写run()方法,创建...

    Java多线程编程线程的协同、停止、暂停、继续等操作实现

    总之,理解和熟练运用这些Java多线程操作对于编写高效、稳定的并发程序至关重要。开发者应始终关注线程安全,避免不必要的数据竞争,并确保程序在多线程环境下的正确性和性能。通过实践和学习,可以更好地掌握Java多...

Global site tag (gtag.js) - Google Analytics