守護線程的應用
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());
}
}
}
