導航:首頁 > 編程語言 > java定時器quartz實例

java定時器quartz實例

發布時間:2025-04-30 07:29:51

⑴ 怎樣用java做個定時器,每個星期一中午12點整執行doXX這一動作。越詳細越好.用監聽哥跪謝!

主類:
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.scheleAtFixedRate(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包帶的框架等等

⑵ spring如何使用quartz定時,8:30到19:00,每10分鍾執行一次,支持這種設置嗎參

為了實現從8:30到19:00每10分鍾執行一次的任務,可以採用一種策略,即設定多個定時器來實現連續執行的需求。具體步驟如下:

首先,創建一個定時器,設定在8:29開始啟動,執行8:30開始的任務。這個任務可以是一個簡單的觸發器,用於啟動後續的定時任務。接著,設置一個定時器,從8:30開始,每10分鍾執行一次。這個任務可以是一個具體的業務邏輯處理,比如數據更新、日誌記錄等。最後,設定一個定時器,在19:00開始,每天執行一次,用於停止之前的定時任務。這樣就可以實現8:30到19:00之間每10分鍾執行一次任務的需求。

在Spring中,可以使用Quartz來實現這種定時任務。首先,在Spring配置文件中配置Quartz的相關信息,比如數據源、JobDetail、Trigger等。然後,定義JobDetail,設置任務的類路徑和參數。接著,定義Trigger,設置觸發器的名稱、組名、開始時間、重復策略等信息。最後,在業務邏輯中啟動Quartz的Scheler,通過配置好的JobDetail和Trigger來執行定時任務。

Quartz提供了豐富的觸發器類型,比如SimpleTrigger和CronTrigger。對於這種每10分鍾執行一次的任務,可以使用SimpleTrigger。而對於8:30到19:00之間的時間段控制,可以使用CronTrigger來實現。通過Cron表達式,可以精確地設置任務的執行時間。例如,使用Cron表達式"30 30-59 8 * * ?"可以實現8:30開始的任務,而"0 0 19 * * ?"可以實現19:00結束的任務。

通過這種方式,可以靈活地設置定時任務的執行時間和頻率,滿足不同的業務需求。Quartz提供了豐富的功能和靈活的配置方式,使得定時任務的實現更加便捷和高效。

需要注意的是,在配置定時任務時,要確保任務的並發性和線程安全,避免多個任務同時執行導致的數據不一致問題。可以通過設置Quartz的相關屬性,如concurrent和overwriteExistingTriggers,來控制任務的並發執行。

總之,通過合理地配置Quartz的定時任務,可以實現從8:30到19:00每10分鍾執行一次的任務需求。這種方法不僅簡單易懂,而且能夠滿足實際業務場景中的各種復雜需求。

⑶ 在Java中如何設置一個定時任務,在每天的一個時間點自動執行一個特定的程序具體代碼怎麼寫代碼全點

Quartz定時機制
首先導入jar包到程序內 quartz-all-1.6.0.jar

然後創建一個XML
TimeConfig.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 id="mainTask" class="net.timed.MainTask"/> //你要執行的任務類
//jar類
<bean id="mainJob" class="org.springframework.scheling.quartz.">
<property name="targetObject">
<ref bean="mainTask"/>//將你的類添加到定時器當中
</property>
<property name="targetMethod">
<value>execute</value> //定時執行類裡面的哪個方法
</property>
</bean>

<bean id="timeTrigger" class="org.springframework.scheling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="mainJob"/>
</property>
<!--
0 0 10,14,16 * * ? 每天上午10點,下午2點,4點
0 0/30 9-17 * * ? 朝九晚五工作時間內每半小時
0 0 12 ? * WED 表示每個星期三中午12點
"0 0 12 * * ?" 每天中午12點觸發
"0 15 10 ? * *" 每天上午10:15觸發
"0 15 10 * * ?" 每天上午10:15觸發
"0 15 10 * * ? *" 每天上午10:15觸發
"0 15 10 * * ? 2005" 2005年的每天上午10:15觸發
"0 * 14 * * ?" 在每天下午2點到下午2:59期間的每1分鍾觸發
"0 0/5 14 * * ?" 在每天下午2點到下午2:55期間的每5分鍾觸發
"0 0/5 14,18 * * ?" 在每天下午2點到2:55期間和下午6點到6:55期間的每5分鍾觸發
"0 0-5 14 * * ?" 在每天下午2點到下午2:05期間的每1分鍾觸發
"0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44觸發
"0 15 10 ? * MON-FRI" 周一至周五的上午10:15觸發
"0 15 10 15 * ?" 每月15日上午10:15觸發
"0 15 10 L * ?" 每月最後一日的上午10:15觸發
"0 15 10 ? * 6L" 每月的最後一個星期五上午10:15觸發
"0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最後一個星期五上午10:15觸發
"0 15 10 ? * 6#3" 每月的第三個星期五上午10:15觸發

上面這個是quartz的語法 定時單位
-->
<property name="cronExpression">
<value>0 0/5 * * * ?</value> //定時的語法
</property>
</bean>
<bean id="sfb" class="org.springframework.scheling.quartz.SchelerFactoryBean">
<property name="triggers">
<list>
<ref local="timeTrigger"/>
</list>
</property>
</bean>
</beans>

//下面這個類就是我在XML中引入的類
package net.timed;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class MainTask {
public void execute() throws IOException
{
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("do my job"+dateFormat.format(new Date()));
Runtime.getRuntime().exec("cmd /c start E:/mbl/BusinessOffice/MoneDB/bin/bakup.bat");
}
}

然後在web.xml中把這個TimeConfig.xml添加進去作為監聽
系統啟動的時候自動就監聽這個事件

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<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>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>

這個是quartz spring的定時機制 請仔細的看看 如果可以請給分哦

⑷ java quartz job 執行時間配置

第一步:引包
要使用Quartz,必須要引入以下這幾個包:
1、log4j-1.2.16
2、quartz-2.1.7
3、slf4j-api-1.6.1.jar
4、slf4j-log4j12-1.6.1.jar
這些包都在下載的Quartz包裡麵包含著,因此沒有必要為尋找這幾個包而頭疼。
第二步:創建要被定執行的任務類
這一步也很簡單,只需要創建一個實現了org.quartz.Job介面的類,並實現這個介面的唯一一個方法execute(JobExecutionContext arg0) throws JobExecutionException即可。如:
import java.text.SimpleDateFormat;

import java.util.Date;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

public class myJob implements Job {

@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
System.out.println(sdf.format(new Date()));
}

}
import java.text.SimpleDateFormat;

import java.util.Date;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

public class myJob implements Job {

@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
System.out.println(sdf.format(new Date()));
}

}

這個例子很簡單,就不用解說了。

第三步:創建任務調度,並執行
這一步應該算是最難的一步的,但其實是非常簡單的,直接上代碼


import static org.quartz.CronScheleBuilder.cronSchele;
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.Scheler;
import org.quartz.SchelerFactory;
import org.quartz.impl.StdSchelerFactory;

public class Test {
public void go() throws Exception {
// 首先,必需要取得一個Scheler的引用
SchelerFactory sf = new StdSchelerFactory();
Scheler sched = sf.getScheler();
//jobs可以在scheled的sched.start()方法前被調用

//job 1將每隔20秒執行一次
JobDetail job = newJob(myJob.class).withIdentity("job1", "group1").build();
CronTrigger trigger = newTrigger().withIdentity("trigger1", "group1").withSchele(cronSchele("0/20 * * * * ?")).build();
Date ft = sched.scheleJob(job, trigger);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
System.out.println(job.getKey() + " 已被安排執行於: " + sdf.format(ft) + ",並且以如下重復規則重復執行: " + trigger.getCronExpression());

// job 2將每2分鍾執行一次(在該分鍾的第15秒)
job = newJob(myJob.class).withIdentity("job2", "group1").build();
trigger = newTrigger().withIdentity("trigger2", "group1").withSchele(cronSchele("15 0/2 * * * ?")).build();
ft = sched.scheleJob(job, trigger);
System.out.println(job.getKey() + " 已被安排執行於: " + sdf.format(ft) + ",並且以如下重復規則重復執行: "+ trigger.getCronExpression());

// 開始執行,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();
}

}
import static org.quartz.CronScheleBuilder.cronSchele;
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.Scheler;
import org.quartz.SchelerFactory;
import org.quartz.impl.StdSchelerFactory;

public class Test {
public void go() throws Exception {
// 首先,必需要取得一個Scheler的引用
SchelerFactory sf = new StdSchelerFactory();
Scheler sched = sf.getScheler();
//jobs可以在scheled的sched.start()方法前被調用

//job 1將每隔20秒執行一次
JobDetail job = newJob(myJob.class).withIdentity("job1", "group1").build();
CronTrigger trigger = newTrigger().withIdentity("trigger1", "group1").withSchele(cronSchele("0/20 * * * * ?")).build();
Date ft = sched.scheleJob(job, trigger);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
System.out.println(job.getKey() + " 已被安排執行於: " + sdf.format(ft) + ",並且以如下重復規則重復執行: " + trigger.getCronExpression());

// job 2將每2分鍾執行一次(在該分鍾的第15秒)
job = newJob(myJob.class).withIdentity("job2", "group1").build();
trigger = newTrigger().withIdentity("trigger2", "group1").withSchele(cronSchele("15 0/2 * * * ?")).build();
ft = sched.scheleJob(job, trigger);
System.out.println(job.getKey() + " 已被安排執行於: " + sdf.format(ft) + ",並且以如下重復規則重復執行: "+ trigger.getCronExpression());

// 開始執行,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();
}

}

OK了,Job1和Job2就會被安排為定時執行了。此時程序是可以執行的了,但是可能會輸出WARN級別日誌,這是因為沒有加log4j的配置文件,加上配置文件,就OK了。這里需要說明的地方只有一個,其它的可以直接Copy到您的項目裡面。看代碼:
CronTrigger trigger = newTrigger().withIdentity("trigger1", "group1").withSchele(cronSchele("0/20 * * * * ?")).build();
CronTrigger trigger = newTrigger().withIdentity("trigger1", "group1").withSchele(cronSchele("0/20 * * * * ?")).build();

⑸ Java定時器Java定時器怎麼實現一個任務多個時間點,給別人用時間可以改動的

  1. java中quartz框架設置定時任務時,是可以設置各種時間啟動的

    每天什麼時候執行:

    <value>0 59 23 * * ?</value>: 如下為每天23:59:00開始回執行

    <value>0 1,2,3 11,12 * * ? </value>: 每天11:01,11:02,11:03; 12:01,12:02,12:03分執答行任務

  2. 至於你說的別人可以改時間,你可以把這個時間參數提取處理,放到一個頁面或者資料庫存起來,然後別人通過頁面或者鏈接資料庫修改就行了。

⑹ 教你如何使用quartz定時任務器

使用Quartz定時任務器的指南


Quartz定時任務提供了強大的任務調度功能,包括Scheled定時器任務和Cron表達式定時任務。


1. Scheled定時器任務

定時任務類與啟動類緊密相連,例如每兩秒觸發一次的任務,通過Scheled的cron表達式實現。cron表達式由6個域組成,每個域代表不同的時間含義,如分秒的通配符、范圍和周期性觸發等。


2. Cron表達式詳解

3. Spring Boot整合Quartz

Quartz在Spring Boot中作為任務調度框架,簡化了任務的配置和管理。它支持SimpleTrigger和CronTrigger兩種常用定時器類型,如每周五執行一次或每月10日10:15執行。


4. 基本步驟

  1. 引入Quartz依賴,創建Job類並定義標識。

  2. 創建Trigger,同樣設置標識並啟動。

  3. 通過SchelerFactory實例化並操作調度,如啟動、暫停和停止。

  4. 在Spring Boot中,可選擇全局配置或通過Job類注入依賴對象。

⑺ 求高手指點一二,我需要用java編寫一個定時器,每天8點開始執行,每一個小時執行一次,過了晚上12點停止

ScheledExecutorServiceservice=Executors.();
service.scheleAtFixedRate(newTimerTask(){
@Override
publicvoidrun(){
if(當前時間>8點){
dowork();//你要做的事
}
if(當前時間>12點){
this.cancel();
}
}
},0,1,TimeUnit.HOURS);

閱讀全文

與java定時器quartz實例相關的資料

熱點內容
windows7系統共享文件 瀏覽:62
ps前往文件夾 瀏覽:694
信捷plc編程用哪個軟體 瀏覽:939
vba導入文件 瀏覽:690
更新後版本英文怎麼說 瀏覽:267
桌面雲配置文件分離 瀏覽:505
iphone5如何升級4g網路 瀏覽:5
團購是在哪個app 瀏覽:897
打開多個word文檔圖片就不能顯示 瀏覽:855
騰訊新聞怎麼切換版本 瀏覽:269
app安裝失敗用不了 瀏覽:326
桌面文件滑鼠點開會變大變小 瀏覽:536
手機誤刪系統文件開不了機 瀏覽:883
微信兔子甩耳朵 瀏覽:998
android藍牙傳文件在哪裡 瀏覽:354
蘋果6s軟解是真的嗎 瀏覽:310
c語言代碼量大 瀏覽:874
最新網路衛星導航如何使用 瀏覽:425
以下哪些文件屬於圖像文件 瀏覽:774
zycommentjs 瀏覽:414

友情鏈接