导航:首页 > 编程语言 > java定时器每天执行

java定时器每天执行

发布时间:2023-04-05 18:42:12

java定时任务每天多个时间点怎么办

1、创建ScheledExecutorService对象,用于执行定时任务。
2、使用scheleAtFixedRate()方法来设置定时任务,该方法可以指定任务的初始举斗延迟时间、任务运行周期等参数。
3、在定时任务的run()方法中编写任务代码,实现需要执行的业务逻辑。
4、在程序启动时,调用锋或ScheledExecutorService对象的shutdown()方法来关闭定时任务。正基磨

② java怎样做定时器每天一点发送一条短信到的需求

如果想用框架的话推荐“Spring Schele定时任务”。

如果想自己简单的实现的汪洞话可以使用java的Timer类和TimerTask类,它们配合可以每隔指定时间执行一次对应的Task,比较简单,参考这篇博客,run函数中放你的发送消岩短信的代码拿陵御就行了。

③ 求高手指点一二,我需要用java编写一个定时器,每天8点开始执行,每一个小时执行一次,过了晚上12点停止

ScheledExecutorServiceservice=Executors.();
service.scheleAtFixedRate(newTimerTask(){
@Override
publicvoidrun(){
if(当前时间>8点){
dowork();//你要做的事
}
if(当前时间>12点){
this.cancel();
}
}
},0,1,TimeUnit.HOURS);

④ java定时器 每天凌晨 固定执行一个方法

可以通过以下方式实现,

public class TimerManager {
//时间间隔
private static final long PERIOD_DAY = 24 * 60 * 60 * 1000;
public TimerManager() {
Calendar calendar = Calendar.getInstance();
/*** 定制每日:00执行方法 ***/
calendar.set(Calendar.HOUR_OF_DAY, 2);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);

Date date=calendar.getTime(); //第一次执行定时任务的时间

//如果第一次执行定时任务的时间 小于 当前的时间
//此时要在 第一次执行定时任务的时间 加一天,以便此任务在下个时间点执行。如果不加一天,任务会立即执行。
if (date.before(new Date())) {
date = this.addDay(date, 1);
}

Timer timer = new Timer();

NFDFlightDataTimerTask task = new NFDFlightDataTimerTask();
//安排指定的任务在指定的时间开始进行重复的固定延迟执行。
timer.schele(task,date,PERIOD_DAY);
}

// 增加或减少天数
public Date addDay(Date date, int num) {
Calendar startDT = Calendar.getInstance();
startDT.setTime(date);
startDT.add(Calendar.DAY_OF_MONTH, num);
return startDT.getTime();
}

}

public class NFDFlightDataTimerTask extends TimerTask {

private static Logger log = Logger.getLogger(NFDFlightDataTimerTask.class);

@Override
public void run() {
try {
//在这里写你要执行的内容

} catch (Exception e) {
log.info("-------------解析信息发生异常--------------");
}
}
}

public class NFDFlightDataTaskListener implements ServletContextListener {
public void contextInitialized(ServletContextEvent event) {
new TimerManager();
}
public void contextDestroyed(ServletContextEvent event) {
}

}

然后要在web.xml里面配置监听器
<listener>
<listener-class>
com.listener.NFDFlightDataTaskListener
</listener-class>
</listener>

⑤ java代码:如何定时执行任务,例如每天的12点整执行System.out.println("now");

如果你是在项目中使用,用quartz,如何使用自己搜索。
如果你只是做测试,可版用线程。
public class Test implements Runable{
public void run() throws Exception{
while(true){
long time = System.currentTime().getTime();
if(判断time是否是12:00){
System.out.println("");

}

sleep(1000); // 暂时权1秒.

}
}
}

//main方法中
Thread t = new Thread(new Test());
t.start();

⑥ Java 定时器,每天凌晨自动执行一个方法,用哪个好

用选择间隔时长的那款!

⑦ java timer 定时器 想要实现 每天的 偶数点 的40 执行 方法 该怎么实现

这个不难, 在timer 中获得当前的时间,判断小时数 和分钟数
if(小洞颤时%2==0){
if(分钟==40){
执行代码
}
}
另外 timer 最好60秒执行一次, 不然在40分的时候 可能返消会执行多次漏颤知代码,当然自己做判断也可以。望采纳

⑧ JAVA定时执行任务,每天定时几点钟执行任务

案例: 你想让他几点执行都ok

1.MyJob02
//首先我们需要定义一个任务类,比如为MyJob02 ,
//该类需要继承Job类,然后添加execute(JobExecutionContext context)方法,在
//这个方法中就是我们具体的任务执行的地方。
//由希望由调度程序执行的组件实现的接口
public class MyJob02 implements Job {

@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
// TODO Auto-generated method stub
// 执行响应的任务.

System.out.println("HelloJob.execute,"+new Date());
}
2.
public static void main(String[] args) throws Exception {
//SchelerFactory 是一个接口,用于Scheler的创建和管理
SchelerFactory factory = new StdSchelerFactory();
//从工厂里面拿到一个scheler实例
//计划表(可能翻译的不太贴切),现在我们有了要做的内容,
//与调度程序交互的主要API
/*
* Scheler的生命期,从SchelerFactory创建它时开始,
到Scheler调用shutdown()方法时结束;Scheler被创建后,
可以增加、删除和列举Job和Trigger,以及执行其它与调度相关的操作
(如暂停Trigger)。但是,Scheler只有在调用start()方法后,
才会真正地触发trigger(即执行job)
*/
Scheler scheler = factory.getScheler();
//具体任务.
//用于定义作业的实例
//JobBuilder - 用于定义/构建JobDetail实例,用于定义作业的实例。
JobDetail job = JobBuilder.newJob(MyJob.class).withIdentity("job1", "group1").build();

//Trigger(即触发器) - 定义执行给定作业的计划的组件
//TriggerBuilder - 用于定义/构建触发器实例
CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "group1")
.withSchele(CronScheleBuilder.cronSchele("0/1 * * * * ?")).build();
scheler.scheleJob(job, trigger);
scheler.start();

}

⑨ Java定时器

好多朋友用过Windows的任务计划 也有不少程序迷自己曾写过时钟报警 系统自动关机等趣味程散槐序 可却很少有朋友在Web工程中实现过类似功能

当Web工程启动时 定时器能自动开始计时 在整个Web工程的生命期里 定时器能在每晚深夜触发一次任务 因此定时器的存放位置也值得考查 不能简单的存在于单个Servlet或JavaBean中 必须能让定时器宿主的存活期为整个Web工程生命期 在工程启动时能自动加载运行 结合这两点 跟 Servlet上下文有关的侦听器就最合适不过了 通过在工程的配置文件中加以合理配置 会在工程启动时自动运行 并在整个工程生命期中处于监听状态

下面就Servlet侦听器结合Java定时器来讲述整个实现过程 要运用Servlet侦键册听器需要实现 javax servlet ServletContextListener接口 同时实现它的contextInitialized (ServletContextEvent event)和contextDestroyed(ServletContextEvent event)两个接口函数 考虑定时器有个建立和销毁的过程 看了前面两个接口函数 就不容置疑的把建立的过程置入 contextInitialized 把销毁的过程置入contextDestroyed了

我把ServletContextListener的实现类取名为ContextListener 在其内添加一个定时器 示例代码如下所示

import java util Timer;

import javax servlet ServletContextEvent;

import javax servlet ServletContextListener;

import javax servlet ServletException;

import javax servlet ServletRequest;

import javax servlet ServletResponse;

import javax servlet HttpServlet;

public class ContextListener

extends HttpServlet

implements ServletContextListener {

public ContextListener() {

}

private java util Timer timer = null;

public void contextInitialized(ServletContextEvent event) {

timer = new java util Timer(true);

event getServletContext() log( 定时器已启动 );

timer schele(new MyTask(event getServletContext()) * * );

event getServletContext() log( 已经添加任务调度表 );

}

public void contextDestroyed(ServletContextEvent event) {

timer cancel();

event getServletContext() log( 定时器销毁 );

}

}

以上代码中 timer schele(new MyTask(event getServletContext()) * * )这一行为定时器调度语句 其中MyTask是自定义需要被调度的执行任务(在我的财政数据中心项目中就是报表计算引擎入口) 从 java util TimerTask继承 下面会重点讲述 第三个参数表示每小时(即 * * 毫秒)被触发一次 中间参数 表示无延迟 其它代码相当简单 不再详细说明

稿掘宏下面介绍MyTask的实现 上面的代码中看到了在构造MyTask时 传入了javax servlet ServletContext类型参数 是为记录Servlet日志方便而传入 因此需要重载MyTask的构造函数(其父类java util TimerTask原构造函数是没有参数的) 在timer schele()的调度中 设置了每小时调度一次 因此如果想实现调度任务每 小时被执行一次 还需要判断一下时钟点 以常量C_SCHEDULE_HOUR表示(晚上 点 也即 点) 同时为防止 小时执行下来 任务还未执行完(当然 一般任务是没有这么长的) 避免第二次又被调度以引起执行冲突 设置了当前是否正在执行的状态标志isRunning 示例代码如下所示

import java util *;

import javax servlet ServletContextEvent;

import javax servlet ServletContextListener;

import javax servlet ServletException;

import javax servlet ServletRequest;

import javax servlet ServletResponse;

import javax servlet HttpServlet;

import javax servlet *;

public class MyTask extends TimerTask {

private static final int C_SCHEDULE_HOUR = ;

private static boolean isRunning = false;

private ServletContext context = null;

public MyTask() {

}

public MyTask(ServletContext context) {

ntext = context;

}

public void run() {

Calendar cal = Calendar getInstance();

if (!isRunning) {

if (C_SCHEDULE_HOUR == cal get(Calendar HOUR_OF_DAY)) {

isRunning = true;

context log( 开始执行指定任务 );

//TODO 添加自定义的详细任务 以下只是示例

//系统定时接收邮件

Email email=new Email();

email recieve();

isRunning = false;

context log( 指定任务执行结束 );

}

}

else {

context log( 上一次任务执行还未结束 );

}

}

}

到这儿 ServletContextListener和MyTask的代码都已完整了 最后一步就是把ServletContextListener部署到您的Web工程中去 在您工程的web xml配置文件中加入如下三行

<listener>

<listener class> test ContextListener</listener class>

</listener>

lishixin/Article/program/Java/hx/201311/26421

⑩ java定时器 每天12点 固定执行一个方法

Calendar cal = Calendar.getInstance();
//每天定点执行
cal.set(Calendar.HOUR_OF_DAY,12);
cal.set(Calendar.MINUTE,0);
cal.set(Calendar.SECOND,0);
Timer timer = new Timer();
timer.schele(new TimerTask() {
public void run() {
//执行的内内容容
}
},cal.getTime(), 24*60*60*1000);

阅读全文

与java定时器每天执行相关的资料

热点内容
maya粒子表达式教程 浏览:84
抖音小视频如何挂app 浏览:283
cad怎么设置替补文件 浏览:790
win10启动文件是空的 浏览:397
jk网站有哪些 浏览:134
学编程和3d哪个更好 浏览:932
win10移动硬盘文件无法打开 浏览:385
文件名是乱码还删不掉 浏览:643
苹果键盘怎么打开任务管理器 浏览:437
手机桌面文件名字大全 浏览:334
tplink默认无线密码是多少 浏览:33
ipaddgm文件 浏览:99
lua语言编程用哪个平台 浏览:272
政采云如何导出pdf投标文件 浏览:529
php获取postjson数据 浏览:551
javatimetask 浏览:16
编程的话要什么证件 浏览:94
钱脉通微信多开 浏览:878
中学生学编程哪个培训机构好 浏览:852
荣耀路由TV设置文件共享错误 浏览:525

友情链接