问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用java实现定时任务要稳定的。谁帮实现一下。 比如: 每天早上8点输出一句话。(天天早上8点都输出).

发布网友 发布时间:2022-04-30 01:37

我来回答

4个回答

热心网友 时间:2023-10-11 15:36

如果是linux,可以使用linux的cron服务来每天8点运行你的程序

如果不是或者没有条件使用cron,可以考虑使用java的开源组件quartz,它完全支持cron表达式来声明定时任务,也易于和spring集成。楼上已经给出quartz的用法了。

如果要纯粹自己写一个程序的话:

public class Test {
public static void main(String[] args) throws Exception{
while(true){
//睡到明天8点
Thread.sleep(getDelay());
System.out.println("起床啦~~");
}
}
private static long getDelay(){
//计算离下一次8点还有多久(毫秒)
long delay = 0;
Calendar c = Calendar.getInstance();
c.set(Calendar.HOUR_OF_DAY, 23);
c.set(Calendar.MINUTE, 59);
c.set(Calendar.SECOND, 59);
//计算当前离今天23:59:59有多少毫秒
delay = c.getTimeInMillis() - System.currentTimeMillis();
//加一秒到下一天,再加上8小时的毫秒
delay = delay + 1000 + 60*60*8*1000;
return delay;
}
}

注意:这个程序有一个问题:就是如果print语句换成一个非常耗时的操作,以至于到第二天才执行完,那么就会跳过第二天8点直接到第三天八点了。不过按你的要求,输出一句话是没问题的。

你也可以不用Thread.sleep,用Timer类也可以。

热心网友 时间:2023-10-11 15:37

用quartz 吧,通过简单的配置文件就可实现。
<cron-expression>0 15 10 * * ? 2001</cron-expression>这个标签是配置执行频率的,从网上搜索下正则表达式即可。

<?xml version="1.0" encoding="UTF-8"?>
<quartz >
<!-- 注册material -->
<job>
<job-detail>
<!-- job 的名字 -->
<name>......</name>
<group>DEFAULT</group>
<description>The job description</description>
<!-- job类的路径加类名 -->
<job-class>......</job-class>
</job-detail>
<!-- 注册触发器 -->
<trigger>
<cron>
<name>......</name>
<group>DEFAULT</group>
<job-name>......</job-name>
<job-group>DEFAULT</job-group>
<cron-expression>0 15 10 * * ? 2001</cron-expression>
</cron>
</trigger>
</job>
</quartz >追问你这个好深奥呀。能用类实现吗。

热心网友 时间:2023-10-11 15:37

自己去复制执行,timer是util的timer
public static void main(String[] args) {
int i=1000; //1000毫秒及1秒
int s=60000;
Timer t=new Timer();
t.schele(new TimerTask() {

@Override
public void run() {
// TODO Auto-generated method stub
SimpleDateFormat sdf=new SimpleDateFormat("HH");
if(sdf.format(new Date()).equals("08")){

System.out.println("现在8点");
}
}
}, i, s);

}

热心网友 时间:2023-10-11 15:38

windows本身就有任务计划
写个程序输出一句话,然后加到任务计划里每天定时运行程序就行了。

linux也有类似的服务。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
年终会活动策划方案 深度解析:第一财经回放,探索财经新风向 逆水寒手游庄园怎么邀请好友同住 逆水寒手游 逆水寒不同区可以一起组队吗? 逆水寒手游 逆水寒怎么进入好友世界? 逆水寒手游 逆水寒怎么去别人的庄园? 使用puppeteer实现将htmll转成pdf 内卷时代下的前端技术-使用JavaScript在浏览器中生成PDF文档 【译】将HTML转为PDF的几种实现方案 变形金刚08动画怎么样 用java做了一个简单的定时任务工程,不知道如何让它在服务器上运行起来?应该怎么做??? 编一个java小程序,通过系统的计划任务定时执行。获得当前时间然后弹出提 ... java的定时任务,执行的原理是什么?或者说为啥它就能知道在那个时间点去执行任务呢?哎,很是想不通. windows计划任务自动执行java程序怎么做 这个月月初哪个时候? 狩猎为什么要在月初和月尾 月初的月亮叫 如何提高视频帧数 月初是什么时候? 古时候月初月末分别叫什么? 一月初是几号? 月初,是什么意思 使用oracle数据库中出现的问题 苏轼的《月初》全文是什么? 有什么牌子的淡奶油可以代替安佳淡奶油? 有什么软件可以自动接电话!自动回答问题? 智能接听助理哪里有下载的,能接电话那种? 多美鲜稀奶油和安佳奶油哪个比较好 智能接听是怎么回事啊? 迅拨智能电话可以让接点方看不到虚拟运营商吗 计划任务批处理:15分钟关闭程序,如程序不在运行,不执行计划 java如何实现多个服务器同时运行一个任务计划,各个服务器之间的任务计划互斥,并能实时监控任务计划状态 在java中timertask是什么类 JAVA定时执行任务,每天定时几点钟执行任务 在Java中如何设置一个定时任务,在每天的一个时间点自动执行一个特定的... java如何实现在下个月的某一天自动获取某数据 弹钢琴手指怎么放? 钢琴指法的规律是什么? 蚂蚁借呗利息高还是信用卡利息高 谈谈对西方历史复古思潮的认识 什么是复古风格音乐?是不是只要有古典乐器的就叫复古风格? 怎么看待近现代中国传统礼仪的衰落以及最近兴起的复古汉服和古代礼仪的风潮?自我理解 NBA球队球衣颜色有什么讲究?还有复古球衣是什么意思? 复古的四字成语 鸦片战争前中国辉煌灿烂的古代文明主要是指 文艺复兴是复古 以前玩过一个传奇私服,是新盟重版的,里面的装备有 黄金、海皇、辉煌、合金 等等```感觉很不错````只是现 汉服是复兴不是复古,你怎么看待。 甲骨文的演变分为几个阶段? 复兴汉服到底是好是坏?