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

守护线程的应用

Java中的线程可以分为两类,即用户线程和守护线程。

用户线程是为了完成任务,而守护线程是为其他线程服务

守护线程的唯一用途是为其他线程提供服务。守护线程会随时中断,

因此不要在守护线程上使用需要释放资源的资源,如输入输出流,数据库连接等

所有的守护线程都是后台线程,如果虚拟机中只剩下守护线程,虚拟机就会退出

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中的线程可以分为两类,即用户线程和守护线程。 用户线程是为了完成任务,而守护线程是为其他线程服务 守护线程的唯一用途是为其他线程提供服务。守护线程会随时中断, 因此不要在守护线程上使用需要释放资源的资源,如输入输出流,数据库连接等 所有的守护线程都是后台线程,如果虚拟机中只剩下守护线程,虚拟机就会退出 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()); } } }
经验分享 程序员 微信小程序 职场和发展