线程问题

http://blog.csdn.net/xyls12345/article/details/26256693

Java中线程分为两种类型:用户线程守护线程。通过Thread.setDaemon(false)设置为用户线程;通过Thread.setDaemon(true)设置为守护线程。如果不设置次属性,默认为用户线程。

用户线程和守护线程的区别:

  1. 主线程结束后用户线程还会继续运行,JVM存活;主线程结束后守护线程和JVM的状态又下面第2条确定。

2.如果没有用户线程,都是守护线程,那么JVM结束(随之而来的是所有的一切烟消云散,包括所有的守护线程)。

import java.io.IOException;class TestMain4 extends Thread {
  public void run() {            //永真循环线程
      for(int i=0;;i++){
          try {
              Thread.sleep(1000);
          } catch (InterruptedException ex) {  }
          System.out.println(i);
      }
  }

  public static void main(String [] args){
      TestMain4 test = new TestMain4();
      test.setDaemon(true);    //调试时可以设置为false,那么这个程序是个死循环,没有退出条件。设置为true,即可主线程结束,test线程也结束。
      test.start();
      System.out.println("isDaemon = " + test.isDaemon());
      try {
          System.in.read();  // 接受输入,使程序在此停顿,一旦接收到用户输入,main线程结束,守护线程自动结束
      } catch (IOException ex) {}
  }}

你可能感兴趣的:(线程问题)