java定时器quartz(java:如何使用 quartz定时执行任务,例如定时执行System.out.pintln(“aa“);看清楚用quartz)
本文目录
- java:如何使用 quartz定时执行任务,例如定时执行System.out.pintln(“aa“);看清楚用quartz
- javaweb,监听器和定时器(Quartz)互相调控的问题
- 如何监控java quartz定时器中的所有定时任务
- java中每个月第一天执行一次任务的定时器如何实现
- 有java高手么,用过定时器quartZ的,为什么本地eclipse可以执行,放服务器上就不执行
- Timer和spring的Quartz两种定时器的区别
java:如何使用 quartz定时执行任务,例如定时执行System.out.pintln(“aa“);看清楚用quartz
} import static org.quartz.CronScheduleBuilder.cronSchedule;import static org.quartz.JobBuilder.newJob;import static org.quartz.TriggerBuilder.newTrigger;import java.text.SimpleDateFormat;import java.util.Date;import org.quartz.CronTrigger;import org.quartz.JobDetail;import org.quartz.Scheduler;import org.quartz.SchedulerFactory;import org.quartz.impl.StdSchedulerFactory;public class Test { public void go() throws Exception { // 首先,必需要取得一个Scheduler的引用 SchedulerFactory sf = new StdSchedulerFactory(); Scheduler sched = sf.getScheduler(); //jobs可以在scheduled的sched.start()方法前被调用 //job 1将每隔30分钟执行一次 JobDetail job = newJob(myJob.class).withIdentity(“job1“, “group1“).build(); CronTrigger trigger = newTrigger().withIdentity(“trigger1“, “group1“).withSchedule(cronSchedule(“0 0/30 * * * ?“)).build(); Date ft = sched.scheduleJob(job, trigger); SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss SSS“); System.out.pintln(“aa“); // 开始执行,start()方法被调用后,计时器就开始工作,计时调度中允许放入N个Job sched.start(); try { //主线程等待一分钟 Thread.sleep(60L * 1000L); } catch (Exception e) {} //关闭定时调度,定时器不再工作 sched.shutdown(true);} public static void main(String args) throws Exception { Test test = new Test(); test.go(); }}
javaweb,监听器和定时器(Quartz)互相调控的问题
public class Listener { public static Object lock = new Object(); public void run() { while (true) { synchronized (Listener.lock) { if (hasData()) { //do check data } nodifyForLock(); } threadSleep(); } } public static boolean hasData() { // return has data } public static void threadSleep() { //sleep 5 second } private void nodifyForLock() { Listener.lock.notify(); }}public class Quartz { public void run() { synchronized (Listener.lock) { if (Listener.hasData()) { waitForLock(); } //do quartz } } private void waitForLock() { try { Listener.lock.wait(); } catch (InterruptedException e) { e.printStackTrace(); } }}
使用同步锁机制,确保监听器和定时器不会同时运行。
使用Wait Nodify机制,确保有数据时定时器会等待,直到数据处理完成。
如何监控java quartz定时器中的所有定时任务
众所周知spring 的Quartz定时器的功能非常强大,可以在特定的年月日小时分秒的时间点触发时间,完成事件的调度,就像windows中得计划任务一样。下面看一个典型的Quartz定时器的实现: 1、首先实现一个用于被执行的类,这个类用于被定时器调度,这个类不需要继承任何类或者接口,代码如下: publicTestQuartz{ public void doSomething(){ //TODO } } 2、spring配置文件,具体配置 《!-- 被执行类 --》 《beanid=“testQuarzt“class=“test.testQuarzt“/》 《!-- 将testQuarzt注入到job中 --》 《beanid=“testQuartzJob“class=“org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean“》 《property name=“targetObject“ ref=“testQuarzt“ /》 《property name=“targetMethod“ value=“doSomething“ /》 《property name=“concurrent“ value=“false“ /》 《/bean》 《!-- 将job注入到定时触发器 --》 《beanid=“testTrigger“class=“org.springframework.scheduling.quartz.CronTriggerBean“》 《property name=“jobDetail“ ref=“testQuartzJob“ /》 《property name=“cronExpression“》 《value》0 0 6 * * ?《value》 《property》 《bean》 《!-- 将定时触发器注入任务工程 --》 《beanclass=“org.springframework.scheduling.quartz.SchedulerFactoryBean“》 《property name=“triggers“》 《list》
java中每个月第一天执行一次任务的定时器如何实现
Date d = new Date();//获取服务器的时间。。。Calendar c= Canlendar.getInstance();c.setTime(d);if(c.get(Calendar.DAY_OF_MONTH) == 1) //当前是1号{ //拿出党员的入党日期(年月)同当前月进行比较 如果相同 发送短信 // //写下你的判断代码}else //当前不是1号 则从下个月1号开始执行定期任务{c.set(Calendar.MONTH,c.get(Calendar.MONTH)+ 1);//设置为下月c.set(Calendar.DAY_OF_MONTH,1);//设置为下月的1号Timer timer =new Timer();timer.scheduleAtFixedRate(new TimerTask(){ public void run(){ //每天都来判断一下 如果当前日期是1号 ////则拿出党员的入党日期(年月)同当前月进行比较 如果相同 发送短信 //run函数里写下你的判断代码}},c.getTime(),24* 3600*1000); //每天执行一次run()方法...}
有java高手么,用过定时器quartZ的,为什么本地eclipse可以执行,放服务器上就不执行
我估计是本地时间和服务器时间不一致导致的。当在本地eclipse运行时,服务器在本地,假如定时器是要在五点做点什么,服务器(也就是你本地了,也就是你电脑时间)到五点的时候,就开始运行,不会有偏差。当你部署到别的地方时,当本地时间五点了,但是服务器时间(就是部署代码的那台电脑时间)才四点五十九,所以就没运行。
Timer和spring的Quartz两种定时器的区别
第一个例子。timer定时器。(这个比较简单,timer是Java.util包下一个类)为了更好的了解,我写了两个定时器类,很被集成TimerTask。public class MyTask extends TimerTask{int count = 0;public void run() {System.out.println(“定时器TimerTask启动“+count);count++;}}++++++++++++++++++++++++++++++++++++++++++++public class MyTaskB extends TimerTask{int count = 0;public void run() {System.out.println(“定时器MyTaskB启动“+count);count++;}}+++++++++++++++++++++++++++++++++++++++++++在main方法中测试Timer timer=new Timer();/*** 定时器任务制定,执行* @param tag: 0.在指定的时间里,执行指定的任务;* 1.在指定的时间里,按照指定的延迟,重复执行指定任务;* 2.从指定的延迟后,执行指定任务;* 3.从指定的延迟后,按照指定的延迟,重复执行指定的任务。** @param mydate:指定的执行时间。只有在tag等于0、1才需要指定。* @param delay: 延迟执行时间,毫秒数。只有在tag等于1、3才需要指定。* @param period:间隔执行时间,毫秒数。只有在tag等于4才需要指定。*///定时器,执行任务测试public static void main(String args) {new TestA().timer.schedule(new MyTask(), 1000);new TestA().timer.schedule(new MyTaskB(), 4000);} 注:timer还可以在web中应用。直接把MyTask()和MyTaskB()里面的方法作修改即可,也可以在任务完成后关掉timer定时。总结:其实timer实现定时任务是很简单的,但是在想法开发是很少用到timer,而是用spring的Quartz。我也在网上找到了一些资料,现在总结一下。1. Java定时器没有持久化机制。2. Java定时器的日程管理不够灵活(只能设置开始时间、重复的间隔,设置特定的日期、时间等)//这点感同身受3. Java定时器没有使用线程池(每个Java定时器使用一个线程)//想必在用timer是遇到了吧。4. Java定时器没有切实的管理方案,你不得不自己完成存储、组织、恢复任务的措施一下例子是我在myeclipse中创建了一个小项目,仅供参考。第一步建立web项目(省略)第二步导入必要包:如下用到了一下包:(这九个包我就不多说了,想必大家都知道他的用处。)第三步:配置相关文件。web.xml、quartz.properties、quartz_job.xml这三个文件。这里我就没用spring的applicationContext.xml文件来管理了。其实原理都是一样,都是在web启动时监听并启动定时器。配置spring的quartz定时器有两种方法,一种是你用quartz.properties、quartz_job.xml,另外一种是用spring的applicationContext.xml。其实在开发的时候我还是比较喜欢前面一种,因为简单、方便,而用spring的applicationContext.xml里面本来就有各种配置,各种注入,是文件不够清晰(个人见解。呵呵)(项目中文件的位置,直接放在src目录下)第四步:web.xml文件配置(监听和启动定时器)《?xml version=“1.0“ encoding=“UTF-8“?》《web-app version=“2.4“xmlns=“运行项目,等待一分钟控制台就会出现
更多文章:

易语言网页api接口怎么调用(易语言,怎么读取网页json的api)
2025年4月1日 16:20

superslide下载(点击左边div层内链接,实现右边div层内容刷新)
2025年3月18日 17:20

sql order by 降序(sql中的orderby是什么意思它是在什么)
2025年3月20日 16:20

cloudera怎么读(不用cloudera manager怎么安装)
2025年3月18日 17:30

ultra boost(adidas ultra boost怎么鉴别真假)
2025年3月24日 04:00

服务器虚拟化软件有哪些(虚拟化软件哪个稳定,适合做服务器的虚拟化)
2025年3月6日 22:10

facial是什么意思(Facial Clear solution是什么意思)
2025年3月20日 15:30

html5开发手机app(HTML5+js 可以开发手机app么)
2025年2月21日 04:20

current password(开机出现entercurrentpassword怎么弄)
2025年2月12日 03:00

wallhaven壁纸(分享wallhaven官网的壁纸违法吗)
2025年3月22日 23:20

assort(sort,asort,和 ksort 有什么分别它们分别在什么情况下使用)
2025年3月24日 11:20

round函数(请问ROUND函数是什么意思比如ROUND(SUM(D1*8)*2))
2025年3月15日 09:50

session(session是什么意思要通俗话的解释!!!)
2025年3月25日 03:30