Java中有两种线程,一种是用户线程,另一种是守护线程。
1、用户线程
用户线程是指用户自定义创建的线程,主线程停止,用户线程不会停止。
public class Demo4Daemon { public static void main(String[] args) { Thread thread = new Thread(new Runnable() { public void run() { for (int i = 0; i < 10; i++) { try { Thread.sleep(10); } catch (Exception e) { } System.out.println("子线程..." + i); } } }); thread.start(); for (int i = 0; i < 5; i++) { try { Thread.sleep(10); System.out.println("主线程" + i); } catch (Exception e) { } } System.out.println("主线程执行完毕!"); } }
结果如下:
主线程0 子线程...0 子线程...1 主线程1 主线程2 子线程...2 主线程3 子线程...3 主线程4 子线程...4 主线程执行完毕! 子线程...5 子线程...6 子线程...7 子线程...8 子线程...9
2、守护线程
守护线程当进程不存在或主线程停止,守护线程也会被停止。
public class Demo4Daemon { public static void main(String[] args) { Thread thread = new Thread(new Runnable() { public void run() { for (int i = 0; i < 10; i++) { try { Thread.sleep(10); } catch (Exception e) { } System.out.println("子线程..." + i); } } }); // 设置线程为守护线程 thread.setDaemon(true); thread.start(); for (int i = 0; i < 5; i++) { try { Thread.sleep(10); System.out.println("主线程" + i); } catch (Exception e) { } } System.out.println("主线程执行完毕!"); } }
结果如下
主线程0 子线程...0 主线程1 子线程...1 主线程2 子线程...2 主线程3 子线程...3 子线程...4 主线程4 主线程执行完毕!
主线程停止,用户线程不会停止,如果我们想要实现主线程停止,用户线程也停止,那么我们可以将用户线程设置为守护线程,这样,主线程停止,用户线程也停止。