java守护线程

/**
* 后台线程又叫做守护线程,通常是为了辅助其他线程而运行的线程,‘
* 后台线程不妨碍程序终止,
* 一个程序中只要还有一个前台线程在执行,这个后台线程就不会终止。
* 反之,如果所有前台线程都已经结束,无论是否还有后台线程在执行,这个进程都会结束。
* 如果对某个线程对象在启动(调用start()方法)前调用setDeamon(true)方法,这个线程就会变成后台线程。
* 创建一个无限循环后台线程,验证前台线程结束后,它也结束
*/

package com.starain.threaddemo;

public class DaemonThread {
public static void main(String[] args) {
FrontThreadTester t1 = new FrontThreadTester(20);
Thread thread1 = new Thread(t1, "thread1");
DaemonThreadTester thread2 = new DaemonThreadTester("Daemon");
thread1.start();
thread2.setDaemon(true);
thread2.start();
}
}

class FrontThreadTester implements Runnable{ //实现Runnable方法创建线程
private int number;
public FrontThreadTester(int number){
this.number = number;
}
public void run(){
for (int i = 1; i <= number; i++) {
System.out.println("前台线程"+Thread.currentThread().getName()+"正在执行第"+i+"次");
}
}
}
class DaemonThreadTester extends Thread{ //扩展(继承)Thread类创建线程
private String name;
public DaemonThreadTester(String name){
this.name = name;
}
public void run(){
super.run();
while(true){
try {
Thread.sleep(1);
System.out.println(name+" is running...");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}

时间: 2024-10-13 21:06:04

java守护线程的相关文章

java 守护线程整理

java中finally语句不走的可能存在system.exit(0)与守护线程 线程sleep采用TimeUnit类 设定线程的名字thread.getcurrentThread().setName() 设定守护线程thread.getcurrentThread().setDaemon(true) http://www.cnblogs.com/diyingyun/archive/2011/12/04/2275268.html 守护线程在没有用户线程可服务时自动离开,在 Java中比较特殊的线程

Java 守护线程(Daemon) 例子

Java  守护线程(Daemon) 示例 本文由 TonySpark 翻译自 Javarevisited.转载请参见文章末尾的要求. 当我们在Java中创建一个线程,缺省状态下它是一个User线程,如果该线程运行,JVM不会终结该程序.当一个线被标记为守护线程,JVM不会等待其结束,只要所有用户(User)线程都结束,JVM将终结程序及相关联的守护线程. Java中可以用 Thread.setDaemon(true) 来创建一个守护线程.咱们看一个Java中有关守护线程的例子. 1 publi

JAVA守护线程与用户线程的区别

public class DaemonTest { public static void main(String[] args) { new WorkerThread().start(); try { Thread.sleep(7500); } catch (InterruptedException e) {} System.out.println("Main Thread ending") ; } } class WorkerThread extends Thread { publi

Java守护线程概述

Java的线程分为两种:User Thread(用户线程).DaemonThread(守护线程). 只要当前JVM实例中尚存任何一个非守护线程没有结束,守护线程就全部工作:只有当最后一个非守护线程结束是,守护线程随着JVM一同结束工作,Daemon作用是为其他线程提供便利服务,守护线程最典型的应用就是GC(垃圾回收器),他就是一个很称职的守护者. User和Daemon两者几乎没有区别,唯一的不同之处就在于虚拟机的离开:如果 User Thread已经全部退出运行了,只剩下Daemon Thre

JAVA - 守护线程(Daemon Thread)

转载自:http://www.cnblogs.com/luochengor/archive/2011/08/11/2134818.html 在Java中有两类线程:用户线程 (User Thread).守护线程 (Daemon Thread). 所谓守护 线程,是指在程序运行的时候在后台提供一种通用服务的线程,比如垃圾回收线程就是一个很称职的守护者,并且这种线程并不属于程序中不可或缺的部分.因此,当所有的非守护线程结束时,程序也就终止了,同时会杀死进程中的所有守护线程.反过来说,只要任何非守护线

白话JAVA守护线程

OneCoder(苦逼Coder)原创,转载请务必注明出处: http://www.coderli.com/archives/daemon-thread-plain-words/ 关于“白话”:偶然想到的词,也许有一天能成为一个系列.目的就是用简洁,明快的语言来告诉您,我所知道的一切. Java中的线程分两类,用户线程和守护线程. Thread commonThread = new Thread("Common Thread"); 这样就是用户线程. Thread daemonThre

转:JAVA守护线程

原文地址:https://www.cnblogs.com/wxgblogs/p/5417503.html 详细内容看原文~  ,写的挺好的 在Java中有两类线程:User Thread(用户线程).Daemon Thread(守护线程) .用个比较通俗的比如,任何一个守护线程都是整个JVM中所有非守护线程的保姆:只要当前JVM实例中尚存在任何一个非守护线程没有结束,守护线程就全部工作:只有当最后一个非守护线程结束时,守护线程随着JVM一同结束工作.Daemon的作用是为其他线程的运行提供便利服

从 JVM 视角看看 Java 守护线程

Java 多线程系列第 7 篇. 这篇我们来讲讲线程的另一个特性:守护线程 or 用户线程? 我们先来看看 Thread.setDaemon() 方法的注释,如下所示. Marks this thread as either a daemon thread or a user thread. The Java Virtual Machine exits when the only threads running are all daemon threads. This method must b

java守护线程的理解

package daemonThread; /*setDaemon(true)方法将线程设置为守护线程,线程的Daemon默认值为false * 只要当前JVM实例中存在任何一个非守护线程没有结束,守护线程就在工作 * 当进程中不存在非守护线程,则守护线程随着JVM一同结束 * GC(垃圾回收器)就是一个守护线程 * 本例中main线程虽然先结束,但是testThread线程还在工作,所以只有当testThread线程也结束,才停止打印i */ class MyThread extends Th