`
edr_
  • 浏览: 166211 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

守护线程(Daemon)

    博客分类:
  • J2SE
阅读更多
浅谈守护线程(Daemon ['diːmən] )
java线程有两种:用户线程,守护线程;
守护线程:指在程序运行的时候在后台提供一种通用服务的线程,比如一个拼写检查线程,它是个守护线程,他尽量不打扰你写稿子,你们可以同时进行,他发现有拼写错误时在状态条显示错误,但是你可以忽略。因此,当所有的非守护线程结束时,程序也就终止了,同时会杀死进程中的所有守护线程。反过来说,只要任何非守护线程还在运行,程序就不会终止。

将线程转换为守护线程可以通过调用Thread对象的setDaemon(true)方法来实现。在使用守护线程时需要注意一下几点:
(1) thread.setDaemon(true)必须在thread.start()之前设置;

(2) 在Daemon线程中产生的新线程也是Daemon的;

(3) 守护线程应该永远不去访问固有资源,如文件、数据库,因为它会在任何时候甚至在一个操作的中间发生中断。
附上代码:
package test.thread;
public class DaemonThread extends Thread{
	@Override
	public void run() {
		for (int i = 0; i < 100; i++) {
			try {
				sleep(100);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			System.out.println("守护线程输出"+i);
		}
	}
	public static void main(String[] args) {
		DaemonThread daemonThread=new DaemonThread();
		//设置daemonThread为守护线程,因此当main线程的代码执行完了之后,daemonThread就要中断执行
		daemonThread.setDaemon(true);
		daemonThread.start();
		for (int i = 0; i < 10; i++) {
			try {
				sleep(100);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			System.out.println("非守护线程输出"+i);
		}
	}
}
//执行结果:
非守护线程输出0
守护线程输出0
守护线程输出1
非守护线程输出1
守护线程输出2
非守护线程输出2
守护线程输出3
非守护线程输出3
非守护线程输出4
守护线程输出4
守护线程输出5
非守护线程输出5
守护线程输出6
非守护线程输出6
守护线程输出7
非守护线程输出7
非守护线程输出8
守护线程输出8
守护线程输出9
非守护线程输出9

0
1
分享到:
评论

相关推荐

    精灵线程(Daemon)或守护线程---马克-to-win java视频

    精灵线程(Daemon)或守护线程---马克-to-win java视频

    java daemon 守护线程实例

    java daemon 程序,有助于理解守护线程的概念和使用

    Java线程之守护线程(Daemon)用法实例

    主要介绍了Java线程之守护线程(Daemon)用法,较为详细的分析了守护线程的功能与实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下

    Java 守护线程,看这篇文章就对了! ( Daemon Thread )

    Java 的守护线程什么是Java的守护线程( Daemon Thread )?守护线程的区别?守护线程的作用?守护线程如何创建?守护线程如何判断?守护线程使用的注意事项总结 什么是Java的守护线程( Daemon Thread )? Java 提供...

    Java多线程守护线程

     在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程)  作用  Daemon的作用是为其他线程的运行提供便利服务,守护线程典型的应用是 GC (垃圾回收器),它是一个很称职的守护者。  区别  ...

    java jdk实列宝典 光盘源代码

    守护线程Daemon;线程池;一个死锁的例子; 定时器Timer:包括在指定时间执行任务,在指定时间之后执行任务以及在某个时间之后每隔时间段重复执行的任务; 9 Java GUI 日历:使用swing和awt实现一个图形化的日历可以...

    Java JDK实例宝典

    9 守护线程Daemon 8. 10 线程池 8. 11 一个死锁的例子 8. 12 定时器Timer 第9章 Java GUI 9. 1 日历 9. 2 开窗户游戏 9. 3 标准型计算器 9. 4 更改组件的外观 9. 5 自定义...

    Java守护线程实例详解_动力节点Java学院整理

    在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程) 。下面通过本文给大家分享java守护线程实例详解,需要的朋友参考下吧

    JAVA最新面试资料-备战2023金三银四

    java 中的线程分为两种:守护线程(Daemon)和用户线程(User)。任 何线程都可以设置为守护线程和用户线程,通过方法 Thread.setDaemon(boolon);true 则把该线程设置为守护线程,反之则为用户线程。 Thread....

    Python守护线程用法实例

    本文实例讲述了Python守护线程用法。分享给大家供大家参考,具体如下: 如果你设置一个线程为守护线程,就表示你在说这个线程是不重要的,在进程退出的时候,不用等待这个线程退出。如果你的主线程在退出的时候,...

    java程序设计于开发 第七讲 多线程

    多线程基本概念 创建线程的方式 线程的生命周期及控制 线程的优先级及调度 多线程的互斥与同步 守护线程 (Daemon) 线程组 (ThreadGroup)

    python实现守护进程、守护线程、守护非守护并行

    守护进程 1、守护子进程 主进程创建守护进程 其一:守护进程会在主进程代码执行结束后就终止 其二:守护进程内无法再开启子进程,否则抛出异常:AssertionError: daemonic processes are not allowed to have...

    python基础9_1-进程、线程、守护线程、全局解释器锁、生产者消费者模型

    目录1、Python GIL(Global Interpreter Lock)2、进程(process)多进程multiprocessing进程间通讯-Queues/Pipes/Managers进程锁进程池3、线程(thread)语法join函数daemon(守护线程)线程锁之Lock(互斥锁mutex)/RLock...

    Windows守护程序的实现(软件看门狗)-基于QT开发

    基于QT开发的Windows守护程序看门狗 提供QT源码和编译实现的程序daemon_qt.exe 软件原理是程序扫描windows窗口任务,当连续5次没有发现守护程序在运行时,自动开启该程序。 程序可设定需要守护的windows程序

    python多线程使用方法实例详解

    threading 模块支持守护线程, 其工作方式是:守护线程一般是一个等待客户端请求服务的服务器。 如果把一个线程设置为守护线程,进程退出时不需要等待这个线程执行完成。 如果主线程准备退出时,不需要等待某些子...

    Python中Threading用法详解

    daemon thread 守护线程,如果守护线程之外的线程都结束了。守护线程也会结束,并强行终止整个程序。不要在守护进程中进行资源相关操作。会导致资源不能正确的释放。在非守护进程中使用Event。 Thread 类 (group=...

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

    我们不能在Golang的运行时中使用fork syscall,因为在这种情况下子进程不会继承线程和goroutine。 该库使用了一个简单的技巧:它运行带有标记的预定义副本-预定义的环境变量。 该过程的变量可用性意味着在子副本中...

    Python守护进程实现过程详解

    如果你设置一个线程为守护线程,就表示你在说这个线程是不重要的,在进程退出的时候,不用等待这个线程退出。如果你的主线程在退出的时候,不用等待那些子线程完成,那就设置这些线程的daemon属性。即在线程开始...

    c# 面试必备线程基础知识点

    线程的知识太多,知识点有深有浅,往深的研究会涉及操作系统、CPU、内存,往浅了说就是一些语法。没有一定的知识积累,很难把线程的知识...根据线程运行模式,可以把线程分为前台线程、后台线程和守护(Daemon)线程:

    linux下的守护进程

    守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是一种很有用的进程。Linux的大多数服务器就是用守护进程实现的。同时,守护进程完成...

Global site tag (gtag.js) - Google Analytics