java中线程分两种,守护线程和用户线程。
java中线程分为两种类型:用户线程和守护线程。
通过Thread.setDaemon(false)设置为用户线程;
通过Thread.setDaemon(true)设置为守护线程。
如果不设置次属性,默认为用户线程。
区别:主线程结束后用户线程会继续运行,JVM存活;主线程结束后,如果没有用户线程,都是守护线程,则JVM结束。
public class Mytest extends Thread { public void run() { for(int i=0;;i++){ try { Thread.sleep(1000); } catch (Exection ex) { } System.out.println(i); } } public static void main(String [] args){ Mytest test = new Mytest(); test.setDaemon(true); test.start(); System.out.println("isDaemon: " + test.isDaemon()); try { // test.setDaemon(true); 接受输入,一旦接收到用户输入,main线程结束,守护线程自动结束,JVM结束。 // test.setDaemon(false); 接受输入,一旦接收到用户输入,main线程结束,用户线程会继续,即死循环,JVM不会结束。 System.in.read(); } catch (IOException ex) { } } }