Java学习-074-多线程07:后台线程 Thread.setDaemon(true)

摘要:
在Java程序中,只要前台有线程,Java进程(程序)就不会消失。在前台线程存在期间,可以设置一个后台线程,可以通过thread.setDaemon将其设置为后台线程。
Java 程序中,只要前台存在一个线程,则 Java 进程(程序)都不会消失。在前台线程存续期间,可以设置一个后台线程,线程设置为后台线程可通过 Thread.setDaemon(true) 实现。示例代码如下所示:
packagecom.fanfengping.demo;

importlombok.extern.slf4j.Slf4j;

/*** Java 程序中,只要前台存在一个线程,则 Java 进程(程序)都不会消失。
 * 在前台线程存续期间,可以设置一个后台线程,线程设置为后台线程可通过
 * Thread.setDaemon(true) 实现
 */@Slf4j
public class Demo11RunnableDaemon implementsRunnable {
    @Override
    public voidrun() {
        for (int i = 0; i < 100; i++) {
            try{
                Thread.sleep(30);
            } catch(InterruptedException e) {
                e.printStackTrace();
            }
            if (i % 5 == 0) {
                log.info("{} output {}", Thread.currentThread().getName(), i);
            }
        }
    }

    public static voidmain(String[] args) {
        Demo11RunnableDaemon demo11RunnableDaemon = newDemo11RunnableDaemon();
        Thread threadDaemon = new Thread(demo11RunnableDaemon, "后台线程");
        threadDaemon.setDaemon(true);
        threadDaemon.start();

        try{
            Thread.sleep(500);
        } catch(InterruptedException e) {
            e.printStackTrace();
        }
    }
}

运行程序,控制台输出结果如下所示:

Java学习-074-多线程07:后台线程 Thread.setDaemon(true)第1张

将 main 方法中的休眠时间加长后,还会输出更多的信息,如下所示:

Java学习-074-多线程07:后台线程 Thread.setDaemon(true)第2张

由上述两次的输出结果可以看出,前台线程存续期间,后台线程是也是存在的;当前台线程结束后,后台线程也就消失了。

免责声明:文章转载自《Java学习-074-多线程07:后台线程 Thread.setDaemon(true)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇FFT(快速傅里叶变换)摘要go get 命令下载gin包时出现报错 进击的石头下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

MFC 消息类型

---恢复内容开始--- 1、命令消息(WM_COMMAND) 所有派生自 CCmdTarget 的类都有资格接受WM_COMMAND。 2、Window消息(WM_xxx) 所有派生自 CWnd 的类都有资格接受 WM_xxx。 3、控件消息(WM_NOTIFY) 控件向其父窗口通知消息。 消息处理 1、WM_xxx 消息处理 窗口类(自身)处理→基类处...

JVM+微服务+多线程+锁+高并发性能

JVM+微服务+多线程+锁+高并发性能 方志朋  1.Redis 1、什么是 Redis?. 2、Redis 的数据类型? 3、使用 Redis 有哪些好处? 4、Redis 相比 Memcached 有哪些优势? 5、Memcache 与 Redis 的区别都有哪些? 6、Redis 是单进程单线程的? 7、一个字符串类型的值能存储最大容量是多少? 8、...

__declspec的15种用法

__cdecl和__stdcall都是函数调用规范(还有一个__fastcall),规定了参数出入栈的顺序和方法,如果只用VC编程的话可以不用关心,但是要在C++和Pascal等其他语言通信的时候就要注意了,只有用相同的方法才能够调用成功.另外,像printf这样接受可变个数参数的函数只有用cdecl才能够实现.__declspec主要是用于说明DLL的引...

HBase源码分析之WAL

WAL(Write-Ahead Logging)是数据库系统中保障原子性和持久性的技术,通过使用WAL可以将数据的随机写入变为顺序写入,可以提高数据写入的性能。在hbase中写入数据时,会将数据写入内存同时写wal日志,为防止日志丢失,日志是写在hdfs上的。 默认是每个RegionServer有1个WAL,在HBase1.0开始支持多个WALHBASE-...

Unity应用架构设计(10)——绕不开的协程和多线程(Part 2)

在上一回合谈到,客户端应用程序的所有操作都在主线程上进行,所以一些比较耗时的操作可以在异步线程上去进行,充分利用CPU的性能来达到程序的最佳性能。对于Unity而言,又提供了另外一种『异步』的概念,就是协程(Coroutine),通过反编译,它本质上还是在主线程上的优化手段,并不属于真正的多线程(Thread)。那么问题来了,怎样在Unity中使用多线程呢...

c# sleep 例子

using System; using System.Threading; public class arr { public static void Main() { //int[] arr; //arr = new int[5]; int luzi; for(luzi=1;luzi<10000;luzi++) { Console.WriteL...