首页 > 代码库 > java笔记--守护线程的应用

java笔记--守护线程的应用

守护线程的应用

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());
}
}
}