「java时间任务随机执行」java定时器 每小时执行一次
今天给各位分享java时间任务随机执行的知识,其中也会对java定时器 每小时执行一次进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、java如何根据用户设定的时间进行定时任务
- 2、Java 怎么在指定的时间内执行某一任务
- 3、java怎么根据用户设定的时间执行定时任务
- 4、java 如何设定时间执行程序
- 5、java timer类实现随机时间调用方法
java如何根据用户设定的时间进行定时任务
给你一个案例
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 {
//SchedulerFactory 是一个接口,用于Scheduler的创建和管理
SchedulerFactory factory = new StdSchedulerFactory();
//从工厂里面拿到一个scheduler实例
//计划表(可能翻译的不太贴切),现在我们有了要做的内容,
//与调度程序交互的主要API
/*
* Scheduler的生命期,从SchedulerFactory创建它时开始,
到Scheduler调用shutdown()方法时结束;Scheduler被创建后,
可以增加、删除和列举Job和Trigger,以及执行其它与调度相关的操作
(如暂停Trigger)。但是,Scheduler只有在调用start()方法后,
才会真正地触发trigger(即执行job)
*/
Scheduler scheduler = factory.getScheduler();
//具体任务.
//用于定义作业的实例
//JobBuilder - 用于定义/构建JobDetail实例,用于定义作业的实例。
JobDetail job = JobBuilder.newJob(MyJob.class).withIdentity("job1", "group1").build();
//Trigger(即触发器) - 定义执行给定作业的计划的组件
//TriggerBuilder - 用于定义/构建触发器实例
CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "group1")
.withSchedule(CronScheduleBuilder.cronSchedule("0/1 * * * * ?")).build();
scheduler.scheduleJob(job, trigger);
scheduler.start();
}
Java 怎么在指定的时间内执行某一任务
可以通过死循环的方式来进行实现:第一步就是获取到当前的时间,之后和需要执行的时间进行比较,找出时间差,先让线程停止,之后到时见开始执行死循环,执行完成之后再设置线程等待时间,之后重复执行即可,代码举例如下:
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String str = sdf.format(date);
//此处实现更改为其余的时间
Thread.sleep(睡觉的时间);
for(;;){
//执行某一个方法
//此处实现更改为其余的时间
Thread.sleep(睡觉的时间);
}
备注:上面的部分代码已经有说明,直接根据说明实现即可。这个只是一种简单的实现思路,通常复杂的都需要quazter来实现。
java怎么根据用户设定的时间执行定时任务
// 一天的毫秒数
long daySpan = 24 * 60 * 60 * 1000;
// 规定的每天时间15:33:30运行
final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd '15:33:30'");
// 首次运行时间
Date startTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(sdf.format(new Date()));
// 如果今天的已经过了 首次运行时间就改为明天
if(System.currentTimeMillis() startTime.getTime())
startTime = new Date(startTime.getTime() + daySpan);
Timer t = new Timer();
TimerTask task = new TimerTask(){
@Override
public void run() {
// 要执行的代码
System.err.println("xxxxxxxxx");
}
};
// 以每24小时执行一次
t.scheduleAtFixedRate(task, startTime, daySpan);
java 如何设定时间执行程序
用Timer可以实现~~
Timer的schedule方法可以指定第一次运行的时刻,和重复间隔
具体可以参考API
timer.schedule(task, firstTime, period)
指定firstTime为21:00:00,period为一天的毫秒数24*3600*1000就成了。。
或者可以自己写个线程,放个while循环,每分钟检查一次,如果到时间了就执行任务,如果没到就sleep一分钟。。当然,这种方法比较土。。
更复杂点的可以借助现有的包,比如quartz,有兴趣可以研究下~~
java timer类实现随机时间调用方法
//一秒后开始执行,每五秒内随机执行一次.
import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;
import java.util.Date;
public class test1{
public static void main(String[] args) throws Exception{
Timer time=new Timer();
time.schedule(new tast(),1000,5000);
}
}
class tast extends TimerTask{
public void run(){
Date date=new Date();
System.out.println("I'm start!"+date.toString());
Random random=new Random();
try{
Thread.sleep(random.nextInt(5000));
}catch(Exception e){
e.printStackTrace();
}
date=new Date();
System.out.println("I'm execute!"+date.toString());
}
}
关于java时间任务随机执行和java定时器 每小时执行一次的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-11-28,除非注明,否则均为
原创文章,转载请注明出处。