线程----守护线程

守护线程是服务于用户线程或主线程的的,当用户线程或主线程结束时,守护线程自然结束。 jvm 垃圾回收期就是一个守护线程。

setDaemon(boolean on)   on为true是设置为守护线程

下面是一个列子:

package com.test;

public class B extends Thread {

public static void main(String[] args) {

Thread t1 = new MyCommon();

Thread t2 = new Thread(new MyDaemon());

t2.setDaemon(true); // 设置为守护线程

t2.start();

t1.start();  } }

class MyCommon extends Thread {    public void run() {

for (int i = 0; i < 5; i++) {

System.out.println("线程1第" + i + "次执行!");

try {

Thread.sleep(7);    }

catch (InterruptedException e) {

e.printStackTrace();    }   }

} }

class MyDaemon implements Runnable {

public void run() {

for (long i = 0; i < 9999999L; i++) {

System.out.println("后台线程第" + i + "次执行!");    try {

Thread.sleep(7);    } catch (

InterruptedException e) {

e.printStackTrace();

}

}

}

}

时间: 2024-11-05 11:53:50

线程----守护线程的相关文章

后台线程(守护线程)

有一种线程,它是在后台运行的,它的任务是为其他的线程提供服务,这种线程被称为“后台线程”(Daemon Thread),又称为“守护线程”. 典型的后台线程是定时器”Timer"线程,他负责将固定的时间间隔发送给其他的线程. 后台线程经常用于任务结束时的善后处理.另外,后台线程的优先级要比其他的线程优先级低. 和后台线程相比,一般的线程称为“用户线程”.如果一个应用中只有后台线程在运行,JVM将退出该应用程序. 可以通过setDaemon(boolean d)来将一个普通的线程设置为后台线程.用

python开发线程:线程&amp;守护线程&amp;全局解释器锁

一 threading模块介绍 multiprocess模块的完全模仿了threading模块的接口,二者在使用层面,有很大的相似性,因而不再详细介绍 官网链接:https://docs.python.org/3/library/threading.html?highlight=threading# 二 开启线程的两种方式 #方式一 from threading import Thread import time def sayhi(name): time.sleep(2) print('%s

9 并发编程-(线程)-守护线程&amp;互斥锁

一 .守护线程 无论是进程还是线程,都遵循:守护xxx会等待主xxx运行完毕后被销毁 需要强调的是:运行完毕并非终止运行 1.对主进程来说,运行完毕指的是主进程代码运行完毕 2.对主线程来说,运行完毕指的是主线程所在的进程内所有非守护线程统统运行完毕,主线程才算运行完毕 详细解释: 1.主进程在其代码结束后就已经算运行完毕了(守护进程在此时就被回收), 然后主进程会一直等非守护的子进程都运行完毕后回收子进程的资源(否则会产生僵尸进程),才会结束, 2.主线程在其他非守护线程运行完毕后才算运行完毕

54_并发编程-线程-守护线程

一.守护线程 1. 对主进程来说,运行完毕指的是主进程代码运行完毕 2. 对主线程来说,运行完毕指的是主线程所在的进程内所有非守护线程统统运行完毕,主线程才算运行完毕 详解: 1.主进程在其代码结束后就已经算运行完毕了(守护进程在此时就被回收),然后主进程会一直等非守护的子进程都运行完毕后回收子进程的资源(否则会产生僵尸进程),才会结束 2.主线程在其他非守护线程运行完毕后才算运行完毕(守护线程在此时就被回收).因为主线程的结束意味着进程的结束,进程整体的资源都将被回收,而进程必须保证非守护线程

线程--守护线程、线程锁、信号量、事件、条件、定时器、队列、池(三)

守护线程 import timefrom threading import Threaddef func1(): while True: print('*'*10) time.sleep(1)def func2(): print('in func2') time.sleep(5) t = Thread(target=func1,)t.daemon = Truet.start()t2 = Thread(target=func2,)t2.start()t2.join() #加join后会等待func

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

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

从头认识java-18.2 主要的线程机制(5)-守护线程与非守护线程

这一章节我们来讨论一下守护线程与非守护线程. 1.什么是守护线程?什么是非守护线程? 非守护线程:Java虚拟机在它全部非守护线程已经离开后自己主动离开. 守护线程:守护线程则是用来服务用户线程的,假设没有其它用户线程在运行,那么就没有可服务对象,也就没有理由继续下去. 2.同样点 大家都是线程.事实上能够互相切换 3.不同点:退出的时间点 退出的先后顺序: 非守护线程->守护线程->jvm 4.注意点: (1)设置守护线程须要在start之前,否在抛异常 package com.ray.ch

从头认识java-18.2 基本的线程机制(5)-守护线程与非守护线程

这一章节我们来讨论一下守护线程与非守护线程. 1.什么是守护线程?什么是非守护线程? 非守护线程:Java虚拟机在它所有非守护线程已经离开后自动离开. 守护线程:守护线程则是用来服务用户线程的,如果没有其他用户线程在运行,那么就没有可服务对象,也就没有理由继续下去. 2.相同点 大家都是线程,其实可以互相切换 3.不同点:退出的时间点 退出的先后顺序: 非守护线程->守护线程->jvm 4.注意点: (1)设置守护线程需要在start之前,否在抛异常 package com.ray.ch17;

关于java多线程中守护线程的理解

在java中有两类线程:User Thread(用户线程).Daemon Thread(守护线程) 守护线程并非只有虚拟机内部提供,用户在编写程序时也可以自己设置守护线程.下面的方法就是用来设置守护线程的. 1 Thread daemonTread = new Thread(); 2 3 // 设定 daemonThread 为 守护线程,default false(非守护线程) 4 daemonThread.setDaemon(true); 5 6 // 验证当前线程是否为守护线程,返回 tr