定时器和守护线程

(八)定时器

标准库中的定时器

标准库中提供了一个Timer类。Timer类的核心方法为schedule,schedule 包含两个参数:第⼀个参数指定即将要执行的任务代码,第⼆个参数指定多长时间之后执行(单位为毫秒)。

java 复制代码
Timer timer = new Timer();
timer.schedule(new TimerTask() {
 @Override
 public void run() {
 System.out.println("hello");
 }
}, 3000);

(九)守护线程

不要把操作系统的守护进程和守护线程相提并论

守护线程(Daemon Thread)是一种特殊的线程,它的主要作用是为其他线程提供服务,而不是执行核心业务逻辑。当所有非守护线程(用户线程)结束时,JVM 会自动终止守护线程,即使它们还在执行中。

通过 Thread.setDaemon(true) 方法将线程设置为守护线程,必须在启动线程前设置

java 复制代码
    public static void main(String[] args) throws InterruptedException {
        Thread main = Thread.currentThread();

        Thread t = new Thread(() -> {
            try {
                while (true){
                    System.out.println("我是守护线程");
                    Thread.sleep(1000);
                }
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
        });
        t.setDaemon(true);
        t.start();

        Thread.sleep(3000);
    }

特性:

特性 描述
线程类型判断 thread.isDaemon():返回 true 表示守护线程,false 表示用户线程。
设置时机 必须在 thread.start() 前调用 setDaemon(true),否则会抛出 IllegalThreadStateException
继承性 线程创建的子线程会继承父线程的守护状态。例如,守护线程创建的子线程默认是守护线程。
终止机制 当所有用户线程结束时,JVM 会自动调用 System.exit(0) 终止守护线程,不会等待守护线程完成。
相关推荐
cynicme1 小时前
力扣3318——计算子数组的 x-sum I(偷懒版)
java·算法·leetcode
青云交3 小时前
Java 大视界 -- Java 大数据在智能教育学习效果评估与教学质量改进实战
java·实时分析·生成式 ai·个性化教学·智能教育·学习效果评估·教学质量改进
崎岖Qiu3 小时前
【设计模式笔记17】:单例模式1-模式分析
java·笔记·单例模式·设计模式
Lei活在当下3 小时前
【现代 Android APP 架构】09. 聊一聊依赖注入在 Android 开发中的应用
java·架构·android jetpack
不穿格子的程序员4 小时前
从零开始刷算法-栈-括号匹配
java·开发语言·
lkbhua莱克瓦244 小时前
Java练习-正则表达式 1
java·笔记·正则表达式·github
yue0084 小时前
C#类继承
java·开发语言·c#
凯芸呢4 小时前
Java中的数组(续)
java·开发语言·数据结构·算法·青少年编程·排序算法·idea
竹竹零5 小时前
JacksonUtil--序列化与反序列化
java·开发语言·windows
钱多多_qdd5 小时前
基础篇:IoC(三):Bean实例化策略InstantiationStrategy
java·spring