日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

quartz和timer的区别

發布時間:2023/12/14 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 quartz和timer的区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉自:http://apps.hi.baidu.com/share/detail/33720498

1定時器的作用
在實際的開發中,如果項目中需要定時執行或者需要重復執行一定的工作,定時器顯現的尤為重要。
當然如果我們不了解定時器就會用線程去實現,例如:
package org.lzstone.action
public class FinanceAction extends Thread{
?????? private Date date;
?????? public void run{
?????? try{
?????? while(true){
?????? Thread.sleep((int)(Math.random()*1000));
?????? date = new Date();
?????? //定時執行任務
?????? }
?????? }catch(Exception e){
??????? e.printStackTrace();
?????? }
}
}
自己實現定時器的工作很復雜,如果實現不好占用內存過多,系統就此Over,所以處理定時執行或者重復執行的任務,定時器是很好的選擇
2.Java中常見的定時器
1)借助Java.util.Timer來實現
2)OpenSymphony社區提供的Quartz來實現
3.介紹Timer
利用Timer開發定時任務是主要分為兩個步驟:
1)創建定時任務類
示例代碼:
package org.lzstone.action
import java.util.TimeTask
public class LzstoneTimeTask extends TimeTask{
?????? public void run(){
????????????? //執行的定時器任務
?????? }
}
2)運行定時任務,運行定時任務分為兩種方式:
2.1)程序直接啟動
示例代碼:
package org.lzstone.action
public class LzstoneMain{
?????? …….
?????? public void run(){
??????? //執行定時器的任務
??????? //創建實例
??????? Timer timer = new Timer();
??????? 參數:
??????? new LzstoneTimeTask()- 所要安排的任務。
??????? 0- 執行任務前的延遲時間,單位是毫秒。
??????? 1*1000- 執行各后續任務之間的時間間隔,單位是毫秒。
??????? timer.schedule(new LzstoneTimeTask(),0,1*1000);
?????? }
}
2.2)web監聽方式
示例代碼:
package org.lzstone.action
public class LzstoneMain implements ServletContextListener{
?????? private Timer timer = null;
?????? //初始化監聽器,創建實例,執行任務
?????? public void contextInitialized(ServletContextEvent event){
?????????????? timer = new Timer();
?????????????? timer.schedule(new LzstoneTimeTask(),0,1*1000);
?????? }
?????? //銷毀監聽器,停止執行任務
?????? public void contextDestroyed(ServletContextEvent event){
????????????? //注意,在此計時器調用的計時器任務的 run 方法內調用此方法,就可以絕對確保正在執行的任務是此計時器所執行的最后一個任務。
????????????? timer.cancel();
??????? }
}
web.xml配置
<listener>
?? <listener-class>
??????? org.lzstone.action.LzstoneMain
?? </listener-class>
</listener>
4. 介紹Quartz
Quartz是OpenSymphony開源組織在Job scheduling領域又一個開源項目,可以用來創建簡單或者復雜的定時任務,利用Quartz開發定時任務的步驟與Timer類

似。

利用Quartz開發定時任務是主要分為兩個步驟:
1)創建定時任務類
示例代碼:
package org.lzstone.action
public class LzstoneTimeTask implements Job{
?????? public void execute(JobExecutionContext context) throws JobExecutionException{
????????????? //執行的定時器任務
?????? }
}
2)運行定時任務,運行定時任務分為兩種方式:
2.1)程序直接啟動,創建任務調度器及配置相應的任務計劃
示例代碼:
package org.lzstone.action
public class LzstoneMain{
?????? private static Scheduler sched;
?????? public static void run() throws Exception{
????????????? //創建LzstoneTimeTask的定時任務
????????????? JobDetail jobDetail = new JobDetail(“lzstoneJob”,sched.DEFAULT_GROUP,LzstoneTimeTask.class);
????????????? //目標 創建任務計劃
????????????? CronTrigger trigger = new CronTrigger(“lzstoneTrigger”,”lzstone”,”0 0 12 * * ?”);
????????????? //0 0 12 * * ? 代表每天的中午12點觸發
????????????? sched = new org.quartz.impl.StdSchedulerFactory().getScheduler();
????????????? sched.scheduleJob(jobDetail,trigger);
????????????? sched.start();
?????? }
?????? //停止
?????? public static void stop() throws Exception{
????????????? sched.shutdown();
??????? }
}
//執行
public class Main{
?????? ………….
?????? public void run(){
??????????? LzstoneMain.run();
?????? }
?????? …………
}
2.2)web監聽方式
示例代碼:
package org.lzstone.action
public class LzstoneMainListener implements ServletContextListener{
?????? private Timer timer = null;
?????? //初始化監聽器,創建實例,執行任務
?????? public void contextInitialized(ServletContextEvent event){
?????????????? LzstoneMain.run();
?????? }
?????? //銷毀監聽器,停止執行任務
?????? public void contextDestroyed(ServletContextEvent event){
????????????? LzstoneMain.stop();
??????? }
}
web.xml配置
<listener>
?? <listener-class>
??????? org.lzstone.action.LzstoneMainListener
?? </listener-class>
</listener>
5.對比
Timer方式實現定時器,原理簡單,實現方便,在執行簡單的任務比較方便,不足之處是無法確定執行時間,并且依賴性比較強,必須繼承指定的類
Quartz方式實現定時器,方便,清晰指定啟動時間,定時參數比較靈活,容易實現比較復雜的定時任務,不足之處是需要實現特定接口,加載其框架
兩種方式各有優缺點,在特定場合可以根據其特點選擇使用。
6.spring定時任務
Spring定時任務對Timer與Quartz都提供了支持,并且實現步驟基本一樣
首先配置Spring對Timer的支持
1.1 創建定時任務類
package org.lzstone.action
import java.util.TimeTask
public class LzstoneTimeTask extends TimeTask{
?????? public void run(){
????????????? //執行的定時器任務
?????? }
}
1.2 注冊定時任務類,配置任務計劃與任務調度器
??? 在項目的WEB-INF下面創建TimerConfig.xml文件(一般叫做applicationContext.xml)
<?xml version=”1.0” encoding=”UTF-8”?>
<!DOCTYPE beans PUBLIC “-//SPRING//DTD BEAN//EN” “http://www.springframework.org/dtd/spring-beans.dtd”>
<beans>
<bean>
<!–注冊定時執行任務實體–>
<bean id=”lzstoneTimeTask” class=”org.lzstone.action.LzstoneTimeTask”/>
<!–注冊定時器信息–>
<bean id=”taskInfo” class=”org.springframework.scheduling.timer.ScheduledTimerTask”>
<!–第一次執行任務前需要等待的時間,這里設置為3秒–>
<property name=”delay”>
<value>3000</value>
</property>
<!–設置任務的執行周期 這里設置為4秒–>
<property name=”period”>
? <value>4000</value>
</property>
<!–設置具體執行的任務 這里設置為lzstoneTimeTask–>
<property name=”timerTask”>
<ref local=”lzstoneTimeTask”/>
</property>
</bean>
<!–配置定時器任務的調度器–>
<bean id=”timerFactory” class=”org.springframework.scheduling.timer.TimerFactoryBean”>
<!–注冊定時器列表–>
<property name=”scheduledTimerTasks”>
??? <list>
??????? <ref local=”taskInfo”/>
??????? ……..
??? </list>
</property>
</bean>
</beans>
1.3 web項目中的啟動設置
??? <context-param>
????? <param-name>contextConfigLocation</param-name>
????? <param-value>/WEB-INF/TimerConfig.xml</param-value>
???? </context-param>

???? <listener>
???????? <listener-class>
????????????????? org.springframework.web.context.ContextLoaderListener
???????? </listener-class>
???? </listener>
配置Spring對Quartz的支持
2.1 創建定時任務類
package org.lzstone.action
public class LzstoneQuartzTask{
?????? public void execute(){
????????????? //執行的定時器任務
?????? }
}
2.2 注冊定時任務類,配置任務計劃與任務調度器
??? 在項目的WEB-INF下面創建QuartzConfig.xml文件(一般叫做applicationContext.xml)
<?xml version=”1.0” encoding=”UTF-8”?>
<!DOCTYPE beans PUBLIC “-//SPRING//DTD BEAN//EN” “http://www.springframework.org/dtd/spring-beans.dtd”>
<beans>
<bean>
<!–注冊定時執行任務實體–>
<bean id=”lzstoneQuartzTask” class=”org.lzstone.action.LzstoneQuartzTask”/>
<!–注冊定時器信息–>
<bean id=”taskInfo” class=”org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean”>
<!–指定要執行的定時任務類? 這里是LzstoneQuartzTask–>
<property name=”targetObject”>
<ref local=”lzstoneQuartzTask”/>
</property>
<!–指定定時器任務類要執行的方法名稱 這里是execute–>
<property name=”targetMethod”>
<value>execute</value>
</property>
</bean>
<!–配置定時器任務的調度器–>
<bean id=”quartzTrigger” class=”org.springframework.scheduling.quartz.CronTriggerBean”>
<!–聲明要運行的實體–>
<property name=”jobDetail”>
??? <ref local=”taskInfo”/>
</property>
<!–設置運行時間–>
<property name=”cronExpression”>
??? <value>0 0 12 * * ?</value>
</property>
</bean>
<!–注冊監聽器–>
<bean id=”registerQuartz” class=”org.springframework.scheduling.quartz.SchedulerFactoryBean”>
<!–注冊定時器實體 集合–>
<property name=”triggers”>
??? <list>
????????? <ref local=”quartzTrigger”/>
??? </list>
</property>
</bean>
</beans>
2.3 web項目中的啟動設置
??? <context-param>
????? <param-name>contextConfigLocation</param-name>
????? <param-value>/WEB-INF/QuartzConfig.xml</param-value>
???? </context-param>

???? <listener>
???????? <listener-class>
????????????????? org.springframework.web.context.ContextLoaderListener
???????? </listener-class>
???? </listener>


總結

以上是生活随笔為你收集整理的quartz和timer的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 一区二区三区麻豆 | 尤物一区二区 | 高清日韩av | 日本视频网址 | 波多野结衣一本一道 | 91黄色免费视频 | 国产黄色网页 | 不卡一区在线观看 | 午夜国产福利在线观看 | 国产成人无码aa精品一区 | 亚洲综合激情五月久久 | 日本wwwxxx| 国产成人黄色 | 国产一级自拍视频 | jizz精品| 秘密基地在线观看完整版免费 | 日本一区二区免费视频 | 久久久影院| 亚洲精品中文无码AV在线播放 | 日韩午夜激情 | 日韩av三级在线 | 中文在线日韩 | 无码人妻av免费一区二区三区 | 国产chinesehd精品露脸 | 国产老妇视频 | 亚洲成av人片在线观看 | 久久这里有精品视频 | 成人字幕 | 蜜桃av网| 日韩免费精品 | 免费久久一级欧美特大黄 | 欧美午夜大片 | 亚洲精品免费在线观看视频 | 亚州春色 | 成人无码av片在线观看 | 日本泡妞xxxx免费视频软件 | 午夜福利啪啪片 | 18视频在线观看娇喘 | 亚洲国产精品久久人人爱 | jzzijzzij亚洲成熟少妇在线观看 久久久精品人妻一区二区三区 | a级国产视频 | 久草网在线观看 | 色噜噜一区二区三区 | 国产影音先锋 | 高清中文字幕av | 黄色喷水视频 | 奇米精品一区二区三区在线观看 | 日韩中文字 | 日本xx视频 | 久热一区 | 蜜桃视频在线观看www | 国产1级片 | 国产睡熟迷奷系列精品视频 | 伊人资源网 | 日韩七区| 人妻少妇偷人精品无码 | 亚洲在线看 | 狼人综合网 | 蜜桃麻豆视频 | 一区二区成人在线 | 久久99久久99 | 色噜噜色综合 | 黑人极品ⅴideos精品欧美棵 | 丁香亚洲 | 97超碰人人爱 | 黄色动漫免费在线观看 | 狠狠操夜夜 | 三级视频网站在线观看 | 欧美日韩一区二区三区四区 | 免费看黄网站在线观看 | 欧美色视 | 日韩免费播放 | 黄色一级片国产 | 国产人妖在线播放 | 老司机深夜影院 | 亚洲va欧美va国产综合久久 | 漂亮人妻洗澡被公强 日日躁 | 色乱码一区二区三区网站 | 亚洲xx站 | 特黄aaaaaa私密按摩 | 亚洲免费国产视频 | 黄色a一级视频 | 37p粉嫩大胆色噜噜噜 | 黄色av网站在线免费观看 | 涩五月婷婷 | 欣赏asian国模裸体pics | 三级电影网址 | 永久免费精品影视网站 | 国产午夜麻豆影院在线观看 | 国产激情综合五月久久 | 精品国产三级 | 亚洲欧美日韩在线播放 | 精品国产一区二区三区性色av | 五十路六十路 | 可以免费观看的av | 无码少妇一区二区三区芒果 | 人妻妺妺窝人体色www聚色窝 | 蜜桃视频一区二区三区在线观看 | 成年人黄色大片 |