当前位置:首页 > 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 是更灵活的定时任务工具,支持线程池管理,适合需要更高可控性的场景。

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 注解实现定时任务,无需手动管理线程。

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 框架。

java如何定时打印

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开发工具包(JDK) 访问Oracle官方网站或OpenJDK项目页面下载适合操作系统的JDK安装包。选择与系统架构匹配的版本(如Windows x64、macOS ARM等)。运行安装程…

如何学java

如何学java

学习Java的基础知识 Java是一门面向对象的编程语言,掌握基础语法是入门的关键。需要了解变量、数据类型、运算符、控制结构(如if-else、for循环、while循环)、数组等概念。可以通过官方文…

java如何创建类

java如何创建类

创建类的基本语法 在Java中,类通过class关键字定义,语法如下: [访问修饰符] class 类名 { // 成员变量(属性) // 构造方法 // 成员方法 }…

java如何上传文件

java如何上传文件

使用HttpURLConnection上传文件 在Java中,可以通过HttpURLConnection实现文件上传功能。需要设置请求头为multipart/form-data,并构建包含文件数据的请…

java前景如何

java前景如何

Java 当前的市场需求 Java 在企业级开发、大数据、云计算等领域仍占据重要地位。许多大型企业(如银行、电商平台)依赖 Java 构建后端系统。招聘平台数据显示,Java 开发岗位数量稳定,尤其在…

如何运行java项目

如何运行java项目

运行Java项目的步骤 确保Java环境已安装 在运行Java项目前,需确认系统已安装Java Development Kit(JDK)。通过命令行输入java -version和javac -ver…