You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何设置每天下午4点定时运行Java程序

首先把你给出的代码保存为Simple.java,执行javac Simple.java编译得到Simple.class文件,先在本地执行java Simple确认可以正常输出Hello Java,再按你用的操作系统选择对应的定时方案:

Windows 系统:使用任务计划程序
  • 搜索打开「任务计划程序」,点击右侧菜单的「创建基本任务」
  • 自定义任务名称后进入下一步,触发器选择「每天」,设置触发时间为16:00
  • 操作项选择「启动程序」,程序或脚本栏填写Java安装目录下bin文件夹里的java.exe绝对路径(比如C:\Program Files\Java\jdk1.8.0_301\bin\java.exe),添加参数栏填写-cp "你的Simple.class所在文件夹的绝对路径" Simple
  • 确认所有配置后保存任务即可
Linux/macOS 系统:使用crontab定时任务
  • 终端执行crontab -e进入定时任务编辑页
  • 新增一行配置:0 16 * * * 你的java可执行文件绝对路径 -cp 你的Simple.class所在文件夹绝对路径 Simple
    • java路径可以通过终端执行which java查询到,避免环境变量不生效导致执行失败
  • 保存退出后crontab会自动加载新的定时规则
纯Java内置定时方案

如果不想依赖系统的定时工具,可以直接用Java自带的调度能力实现内置定时,示例代码如下:

import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import java.time.LocalTime;
import java.time.Duration;

public class AutoRunTask {
    public static void main(String[] args) {
        ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
        // 配置目标执行时间为每天16点
        LocalTime targetTime = LocalTime.of(16, 0);
        LocalTime now = LocalTime.now();
        // 计算首次执行的延迟时间
        long initialDelay = Duration.between(now, targetTime).getSeconds();
        // 如果当前时间已经过了16点,就从次日16点开始执行
        if (initialDelay < 0) {
            initialDelay += Duration.ofDays(1).getSeconds();
        }
        // 执行周期为24小时
        long period = Duration.ofDays(1).getSeconds();
        scheduler.scheduleAtFixedRate(() -> {
            // 这里放入你需要执行的业务逻辑
            System.out.println("Hello Java");
        }, initialDelay, period, TimeUnit.SECONDS);
    }
}

运行这个代码后程序会常驻后台,到点自动执行对应逻辑。

常见排查点

  • 所有路径都建议填绝对路径,避免环境变量、工作目录不一致导致执行失败
  • Linux系统可以查看/var/log/cron日志排查crontab执行报错
  • Windows系统可以在任务计划程序的任务历史面板查看执行错误信息

内容的提问来源于stack exchange,提问作者Ghulam Azam Khan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 17:27:03