Java分为两种线程:用户线程和守护线程。
用户线程
即用户定义的线程,包括main线程。只要用户线程还在运行,程序就不会终止。
守护线程
- 就是在程序运行的时候后台提供一种通用服务的线程,比如垃圾回收线程。
- 这种线程并不属于程序不可或缺的一部分。
- 当所有非守护进程结束的时候,程序就终止了,并会杀死进程中所有的守护线程。所以不要在守护进程中执行业务逻辑操作。
- Daemon线程创建的子线程仍然是Daemon线程。
- Java的Daemon线程,setDaemon( )设置必须要在start之前。
public class DaemonSample {static class DaemonThread extends Thread {public String name;public DaemonThread(String name){this.name = name;}public void run(){for(int i=0; i<10; i++){try{Thread.sleep(100);} catch (InterruptedException e){e.printStackTrace();}System.out.println(name+"i=" +i);}}}public static void main(String[] args) throws InterruptedException{Thread t1 = new DaemonThread("a");t1.setDaemon(true);Thread t2 = new DaemonThread("b");t1.start();// t2.start();System.out.println("aaa");Thread.sleep(400); //暂停当前线程,把cpu片让给其他线程,即当前main线程并没有结束,让出的时间守护线程可以执行System.out.println("bbb");}}
