java 定时器 quartz

       大家好,今天我想和大家讲解一下“java 定时器 quartz”的工作原理。为了让大家更好地理解这个问题,我将相关资料进行了分类,现在就让我们一起来学习吧。

1.java定时任务需要一直启动服务器吗?

2.怎样用java做个定时器,每个星期一中午12点整执行doXX这一动作。越详细越好.用监听哥跪谢!

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

4.java中tomcat挂了后quartz定时任务是否还能运行

java 定时器 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。

参考资料:

百度百科:spring

参考资料:

百度百科:quartz

用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”有更全面、深入的了解,并且能够在今后的学习中更好地运用所学知识。