1、当其他非守护线程完成时,守护线程将自行结束。
2、任何线程都可以成为守护线程。通过调用Thread.setdaemon()来声明一个线程是一个守护线程。线程的共性是只有在非守护线程还在工作时才有意义。
实例
/** * Creates ten threads to search for the maximum value of a large matrix. * Each thread searches one portion of the matrix. */ public class TenThreads { private static class WorkerThread extends Thread { int max = Integer.MIN_VALUE; int[] ourArray; public WorkerThread(int[] ourArray) { this.ourArray = ourArray; } // Find the maximum value in our particular piece of the array public void run() { for (int i = 0; i < ourArray.length; i++) max = Math.max(max, ourArray[i]); } public int getMax() { return max; } } public static void main(String[] args) { WorkerThread[] threads = new WorkerThread[10]; int[][] bigMatrix = getBigHairyMatrix(); int max = Integer.MIN_VALUE; // Give each thread a slice of the matrix to work with for (int i=0; i < 10; i++) { threads[i] = new WorkerThread(bigMatrix[i]); threads[i].start(); } // Wait for each thread to finish try { for (int i=0; i < 10; i++) { threads[i].join(); max = Math.max(max, threads[i].getMax()); } } catch (InterruptedException e) { // fall through } System.out.println("Maximum value was " + max); } }
以上就是java守护线程的理解,希望对大家有所帮助。更多Java学习指路:
推荐操作环境:windows7系统、java10版,DELL G3电脑。