setDaemon()
    设置一个线程为守护线程, 该线程不会单独执行, 当其他非守护线程都执行结束后, 自动退出

    1. public class Demo04Daemon {
    2. public static void main(String[] args) {
    3. Thread t1 = new Thread("普通线程") {
    4. @Override
    5. public void run() {
    6. for(int i = 0; i < 2; i++) {
    7. System.out.println(getName() + i);
    8. }
    9. }
    10. };
    11. Thread t2 = new Thread("守护线程") {
    12. @Override
    13. public void run() {
    14. for(int i = 0; i < 50; i++) {
    15. System.out.println(getName() + i);
    16. }
    17. }
    18. };
    19. t2.setDaemon(true); //设置为守护线程
    20. t1.start();
    21. t2.start();
    22. }
    23. }
    1. /**
    2. * 从打印结果,可以发现,守护线程并循环体并没有执行完,
    3. * 因为这时普通线程已经执行完成,所以守护线程随即退出
    4. */
    5. 普通线程0
    6. 守护线程0
    7. 普通线程1
    8. 守护线程1
    9. 守护线程2
    10. 守护线程3
    11. 守护线程4
    12. 守护线程5
    13. 守护线程6
    14. 守护线程7
    15. 守护线程8
    16. 守护线程9
    17. 守护线程10
    18. 守护线程11