java 定时器 quartz
大家好,今天我想和大家讲解一下“java 定时器 quartz”的工作原理。为了让大家更好地理解这个问题,我将相关资料进行了分类,现在就让我们一起来学习吧。
1.java定时任务需要一直启动服务器吗?
2.怎样用java做个定时器,每个星期一中午12点整执行doXX这一动作。越详细越好.用监听哥跪谢!
3.用java实现定时任务要稳定的。谁帮实现一下。 比如: 每天早上8点输出一句话。(天天早上8点都输出).
4.java中tomcat挂了后quartz定时任务是否还能运行
java定时任务需要一直启动服务器吗?
Java定时任务通常需要服务器一直运行才能保证任务的正常执行。这是因为定时任务是基于时间的触发器,需要在指定的时间点执行任务,只有服务器一直运行才能保证定时任务的准确执行。
当服务器停止运行时,定时任务也会随之停止。如果有重要的任务需要在指定的时间点执行,而服务器没有一直运行,就会出现任务无法按时执行的情况。这对于一些需要高可靠性的系统来说是非常不利的。
除了需要服务器一直运行外,还需要注意定时任务的时间间隔和执行时间。如果时间间隔过短或者执行时间过长,可能会对服务器造成不必要的负担,影响系统的稳定性和性能。因此,在设计和实现定时任务时,需要考虑到系统的实际情况,合理地安排任务时间,以保证系统的高可靠性和高性能。
怎样用java做个定时器,每个星期一中午12点整执行doXX这一动作。越详细越好.用监听哥跪谢!
写法如下:<bean id="StaticPageQuartz" class="com.test.quartz.pageconvertor.StaticPageConvertor"
/>
<bean id="BuildStaticPageTask"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"
<property name="targetObject" ref="StaticPageQuartz" />
<property name="targetMethod" value="doHTMLConvertor" />
<property name="concurrent" value="false" />
</bean>
<bean id="BuildStaticPageTrigger"
class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="BuildStaticPageTask" />
<property name="cronExpression" value="0 0/5 * * * ?" /><!--每五分钟执行一次--
</bean>
扩展资料:
Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。
Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson创建。简单来说,Spring是一个分层的JavaSE/EE?full-stack(一站式)?轻量级开源框架。
Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。
Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的程序。Jobs可以做成标准的Java组件或 EJBs。Quartz的最新版本为Quartz 2.3.0。
参考资料:
参考资料:
用java实现定时任务要稳定的。谁帮实现一下。 比如: 每天早上8点输出一句话。(天天早上8点都输出).
主类:
package tiwen4; import java.util.Calendar; import java.util.Timer; public class quartz { public static void main(String[] args) { try{ Calendar cal = Calendar.getInstance();//设置定时时间 cal.add(Calendar.DATE, 0);//表示从今天的12点开始跑起来,如果当前时间超过12点会马上跑一次,否则等12点再跑第一次 cal.set(Calendar.HOUR_OF_DAY, 12);//24小时制的,12就是中午12点 cal.set(Calendar.MINUTE, 0);//分 cal.set(Calendar.SECOND, 0);//秒 Timer processTimer = new Timer(); processTimer.scheduleAtFixedRate(new ProcessClass(), cal.getTime(), 86400000);//86400000是24小时,即24小时跑一次 }catch(Exception e){ e.printStackTrace(); }finally{ } } }
定时器调用的类--我在这里只是输出了一下~你也可以自己加函数:
package tiwen4; import java.util.TimerTask; public class ProcessClass extends TimerTask { @Override public void run() { // TODO Auto-generated method stub System.out.println("输出了哈哈");// } }
我上面用的只是一种方式,其实定时方式有很多的linux和window都有自带的定时器,可以直接调用,也可以用上面所说的quartz包带的框架等等
java中tomcat挂了后quartz定时任务是否还能运行
如果是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类也可以。
当tomcat挂了之后,quartz任务将停止,因为他没有服务器跑了。
但是,当你再次启动tomcat,quartz会自动找到已经到点,需要要启动的任务,然后开始运行这个任务。
好了,今天关于“java 定时器 quartz”的话题就讲到这里了。希望大家能够通过我的讲解对“java 定时器 quartz”有更全面、深入的了解,并且能够在今后的学习中更好地运用所学知识。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。