实用 AI

可在线运行 AI 集合,涵盖 AI 文案生成、写作辅助、AI 绘图与照片修复、AI 配音、字幕生成、语音转录以及 AI 视频创作和数字人等多种 AI 服务

查看详情

Java中的守护线程和普通线程有什么区别?

Java中的守护线程(daemon thread)和普通线程有什么区别?

javadaemon threads多线程
1
281
小课
小课2022-05-24 15:55
1 个回答

守护线程不会影响进程的退出,当其它线程都结束后,即使守护线程还在运行,进程也会退出。通过setDaemon(true)可将普通线程设置为守护线程,另外,在守护线程创建的线程默认也是守护线程

1public static void main(String[] args) {
2    Thread t = new Thread(() -> {
3        try {
4            Thread.sleep(3000);
5            System.out.println("Sub-thread finish");
6        } catch (InterruptedException e) {
7            e.printStackTrace();
8        }
9    });
10    //t.setDaemon(true);
11    t.start();
12    System.out.println("Main thread finish");
13}

上面的代码,没有将线程t设置为守护线程,进程会在3秒后执行完子线程后退出,输出如下。

Main thread finish
Sub-thread finish

如果取消第10行的注释,将线程t设置为守护线程,则进程会在main方法结束后直接退出,输出如下。

Main thread finish
1
已修改
小课
小课2022-05-24 16:05
你的回答

内容