守护线程的应用

Java中的线程可以分为两类,即用户线程和守护线程。
用户线程是为了完成任务,而守护线程是为其他线程服务

--如果朋友您想转载本文章请注明转载地址"http://www.cnblogs.com/XHJT/p/3894292.html "谢谢--

守护线程的唯一用途是为其他线程提供服务。守护线程会随时中断,
因此不要在守护线程上使用需要释放资源的资源,如输入输出流,数据库连接等
所有的守护线程都是后台线程,如果虚拟机中只剩下守护线程,虚拟机就会退出

Thread类与守护线程相关方法:

isDaemon() : 测试一个线程是否为守护线程
setDaemon(boolean on) : 讲一个线程标记为守护线程或用户线程

代码实例:

package com.xhj.thread;

/**
* 守护线程的应用
*
* @author XIEHEJUN
*
*/
public class ModifyDaemonThread implements Runnable {

@Override
public void run() {
System.out.println("运行用户线程");
for (int i = 0; i < 5; i++) {
System.out.println("Thinking In Java 更新到版本" + i);
}
}

/**
* 利用内部类来建立守护线程
*
* @return
*/
public Thread daemon() {
class Timer implements Runnable {
@Override
public void run() {
System.out.println("运行守护线程");
long currentTime = System.currentTimeMillis();
long processTime = 0;
while (true) {
if (System.currentTimeMillis() - currentTime > processTime) {
processTime = System.currentTimeMillis() - currentTime;
System.out.println("线程运行时间为: " + processTime);
}
}
}
}
Thread daemonThread = new Thread(new Timer());
return daemonThread;
}

public static void main(String[] args) {
try {

Thread userThread = new Thread(new ModifyDaemonThread());
Thread daemonThread = new ModifyDaemonThread().daemon();
// 在执行用户线程之前,一定要先设置守护线程
daemonThread.setDaemon(true);
userThread.start();
daemonThread.start();
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}

java笔记--守护线程的应用的更多相关文章

  1. Java中守护线程的总结 thread.setDaemon(true)

    https://www.cnblogs.com/ziq711/p/8228255.html 在Java中有两类线程:User Thread(用户线程).Daemon Thread(守护线程) 用个比较 ...

  2. Java中守护线程的总结

    在Java中有两类线程:User Thread(用户线程).Daemon Thread(守护线程) 用个比较通俗的比如,任何一个守护线程都是整个JVM中所有非守护线程的保姆: 只要当前JVM实例中尚存 ...

  3. Java Daemon 守护线程

    Java中可以通过Thread或ThreadGroup的setDaemon方法将线程设置为守护线程 当所有非守护线程退出后 守护线程将被杀死不在运行 .Net中可以通过设置IsBackground属性 ...

  4. java的守护线程与非守护线程

    最近重新研究Java基础知识,发现以前太多知识知识略略带过了,比较说Java的线程机制,在Java中有两类线程:User Thread(用户线程).Daemon Thread(守护线程) ,(PS:以 ...

  5. java中守护线程的一些概念和用法

    网上的资料中,守护线程的功能一般都是“只要当前JVM实例中尚存任何一个非守护线程没有结束,守护线程就全部工作:只有当最后一个非守护线程结束是,守护线程随着JVM一同结束工作,Daemon作用是为其他线 ...

  6. [Java基础] java的守护线程与非守护线程

    最近重新研究Java基础知识,发现以前太多知识知识略略带过了,比较说Java的线程机制,在Java中有两类线程:User Thread(用户线程).Daemon Thread(守护线程) ,(PS:以 ...

  7. 在 java 中守护线程和本地线程区别?

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

  8. java笔记--使用线程池优化多线程编程

    使用线程池优化多线程编程 认识线程池 在Java中,所有的对象都是需要通过new操作符来创建的,如果创建大量短生命周期的对象,将会使得整个程序的性能非常的低下.这种时候就需要用到了池的技术,比如数据库 ...

  9. JAVA 对守护线程的理解

    1.在start之前,setDaemon. 该现场就成为守护线程了. 2.守护现线程并不是主线程结束,子线程(守护线程)也跟着结束.而是守护线程在没有用户线程运行的情况伴随着JVM退出而结束. 示例代 ...

随机推荐

  1. Img与background的区别

    今天做项目中,用background显示了二维码和一些文字,但显示到页面上时,二维码和图片都变得模糊了.于是将图片调整.放大,但在放大后,作为背景图片的它则显示不全,无奈之下用了backgroung- ...

  2. 常用CSS实例

    为表格设置合并边框模型: border-collapse:collapse 规定单元格之间的空间: cellspacing:0 规定内侧边框的哪个部分是可见的: rules:all

  3. [C语言]声明解析器cdecl修改版

    一.写在前面 K&R曾经在书中承认,"C语言声明的语法有时会带来严重的问题.".由于历史原因(BCPL语言只有唯一一个类型——二进制字),C语言声明的语法在各种合理的组合下 ...

  4. struct in_addr 结构体

    struct in_addr 结构体: struct in_addr { in_addr_t s_addr; }; 表示一个32位的IPv4地址. in_addr_t一般为32位的unsigned i ...

  5. 在PHP中使用MySQL Mysqli操作数据库 ,以及类操作方法

    先来操作函数部分,普遍的MySQL 函数方法,但随着PHP5的发展,有些函数使用的要求加重了,有些则将废弃不用,有些则参数必填... ================================= ...

  6. c#中引用类型作为值参数和引用参数问题

    一.分类 C#的值类型包括:结构体(数值类型,bool型,用户定义的结构体),枚举,可空类型. C#的引用类型包括:数组,用户定义的类.接口.委托,object,字符串. 二.参数传递 对于引用类型, ...

  7. [Codeforces Round#488]Div.2

    总结 这是我无聊透顶肝到三点半的一场 cf ,结果还真够无聊的 这套题涵盖了英语题,语文题,模拟题.注重考查了选手的英语素养能力,语文阅读能力和精湛的模拟和枚举能力.是不可多得的一套好题. 没什么单独 ...

  8. 下拉框多选实现回显及sql

    <td class="tabTd"><label>客户来源:</label></td> <td><select c ...

  9. Redis到底是多线程还是单线程?线程安全吗

    redis是单线程,线程安全 redis可以能够快速执行的原因: (1) 绝大部分请求是纯粹的内存操作(非常快速)(2) 采用单线程,避免了不必要的上下文切换和竞争条件(3) 非阻塞IO - IO多路 ...

  10. Eclipse中新建Java工程的三个JRE选项区别

    整理自:https://blog.csdn.net/wdjhzw/article/details/42086615 官方解释(链接) Use default JRE: When selected, t ...