守护线程并非虚拟机内部可以提供,用户也可以自行的设定守护线程 理解:守护线程:在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程) 任何一个守护线程都是整个JVM中所
理解: 守护线程:在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程) 任何一个守护线程都是整个JVM中所有非守护线程的保姆: 只要当前JVM实例中尚存在任何一个非守护线程没有结束,守护线程就全部工作;只有当最后一个非守护线程结束时,守护线程随着JVM一同结束工作 需要注意: (1) thread.setDaemon(true)必须在thread.start()之前设置,否则会跑出一个IllegalThreadStateException异常。你不能把正在运行的常规线程设置为守护线程。 (2) 在Daemon线程中产生的新线程也是Daemon的。 (3) 不要认为所有的应用都可以分配给Daemon来进行服务,比如读写操作或者计算逻辑。 package cn.mym.thread; /** * *Title:GuardThread
*Description:守护线程测试
*Company:
*@author mym *@date 2017-7-10下午10:12:24 *@version */ class GuardThread extends Thread{ @Override public synchronized void start() { super.setDaemon(true); super.start(); } @Override public void run() { int i = 0; while(i < 10){ try { Thread.sleep(50); } catch (InterruptedException e) { e.printStackTrace(); } System.out.print("hello"); i++; } } } public class Test{ public static void main(String[] args) { GuardThread guardThread1 = new GuardThread(); GuardThread guardThread2 = new GuardThread(); guardThread1.start(); //定义main方法中的线程操作 int j = 0; while(j<10){ try { Thread.sleep(50); } catch (InterruptedException e) { e.printStackTrace(); } System.out.print("mym"); j++; } } }