当前位置:首页 > Java

java如何定时打印

2026-03-23 14:20:11Java

使用 TimerTimerTask

TimerTimerTask 是 Java 提供的简单定时任务工具。通过创建一个 TimerTask 并设置 Timer 的调度规则,可以实现定时打印功能。

import java.util.Timer;
import java.util.TimerTask;

public class TimerExample {
    public static void main(String[] args) {
        Timer timer = new Timer();
        TimerTask task = new TimerTask() {
            @Override
            public void run() {
                System.out.println("定时打印: " + System.currentTimeMillis());
            }
        };
        // 延迟 0 秒后执行,每隔 1000 毫秒(1秒)重复一次
        timer.schedule(task, 0, 1000);
    }
}

使用 ScheduledExecutorService

ScheduledExecutorService 是更灵活的定时任务工具,支持线程池管理,适合需要更高可控性的场景。

java如何定时打印

import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

public class ScheduledExecutorExample {
    public static void main(String[] args) {
        ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
        Runnable task = () -> System.out.println("定时打印: " + System.currentTimeMillis());
        // 延迟 0 秒后执行,每隔 1 秒重复一次
        executor.scheduleAtFixedRate(task, 0, 1, TimeUnit.SECONDS);
    }
}

使用 Spring 的 @Scheduled 注解

如果项目基于 Spring 框架,可以直接使用 @Scheduled 注解实现定时任务,无需手动管理线程。

java如何定时打印

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
public class SpringScheduledExample {
    @Scheduled(fixedRate = 1000) // 每隔 1 秒执行一次
    public void printTime() {
        System.out.println("定时打印: " + System.currentTimeMillis());
    }
}

需要在 Spring 配置类上启用定时任务支持:

@EnableScheduling
@Configuration
public class AppConfig {}

使用 Quartz 框架

对于复杂的调度需求(如动态调整时间间隔),可以使用 Quartz 框架。

import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;

public class QuartzExample {
    public static void main(String[] args) throws SchedulerException {
        JobDetail job = JobBuilder.newJob(PrintJob.class)
                .withIdentity("printJob", "group1")
                .build();
        Trigger trigger = TriggerBuilder.newTrigger()
                .withIdentity("trigger1", "group1")
                .startNow()
                .withSchedule(SimpleScheduleBuilder.simpleSchedule()
                        .withIntervalInSeconds(1)
                        .repeatForever())
                .build();
        Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
        scheduler.scheduleJob(job, trigger);
        scheduler.start();
    }

    public static class PrintJob implements Job {
        @Override
        public void execute(JobExecutionContext context) {
            System.out.println("定时打印: " + System.currentTimeMillis());
        }
    }
}

注意事项

  • Timer 是单线程的,如果一个任务执行时间过长,会影响后续任务。
  • ScheduledExecutorService 和 Quartz 支持多线程,适合高并发场景。
  • Spring 的 @Scheduled 注解简单易用,但需依赖 Spring 环境。

标签: java
分享给朋友:

相关文章

如何删除java

如何删除java

卸载 Java 的步骤 Windows 系统: 打开控制面板,选择“程序和功能”或“卸载程序”,在列表中找到 Java 相关条目(如“Java Runtime Environment”或“Java D…

如何学好java

如何学好java

理解基础概念 掌握Java的核心概念是学习的基础。包括数据类型、变量、运算符、控制流(如循环和条件语句)、数组等。理解面向对象编程(OOP)的四大特性:封装、继承、多态和抽象。 实践编程练习 通过实…

java如何产生随机数

java如何产生随机数

使用 Math.random() 方法 Math.random() 生成一个范围在 [0.0, 1.0) 的伪随机 double 值。通过缩放和偏移可以生成指定范围的随机数。 double ra…

如何安装java软件

如何安装java软件

下载Java安装包 访问Oracle官方网站或OpenJDK开源项目页面,选择适合操作系统的Java版本(如Windows、macOS或Linux)。对于个人使用,通常下载JDK(Java Devel…

如何学习java语言

如何学习java语言

学习Java语言的系统方法 理解基础概念 Java是一种面向对象的编程语言,掌握基础概念如变量、数据类型、运算符、控制流语句(if-else、循环)是第一步。熟悉类和对象的概念,理解封装、继承和多态三…

php 实现 java md5加密

php 实现 java md5加密

PHP 实现 Java MD5 加密 Java 和 PHP 的 MD5 加密结果可能存在差异,主要由于字符编码和输出格式的不同。以下是确保 PHP 与 Java MD5 加密结果一致的方法。 确保字…