新聞中心
java定時(shí)執(zhí)行問題: 我想讓一個(gè)Java代碼在每小時(shí)的第25分鐘執(zhí)行一次的,這個(gè)怎么實(shí)現(xiàn)?
用spring quartz
創(chuàng)新互聯(lián)建站公司2013年成立,先為梅里斯等服務(wù)建站,梅里斯等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為梅里斯企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
public class MyJob{
//這里如果你定義實(shí)例變量,可用spring依賴注入,例如
private String job;
public void setJob(String job){
this.job = job;
}
//你要執(zhí)行的操作
public void execute(){
}
}
spring 配置文件
beans-config.xml
?xml version="1.0" encoding="UTF-8"?
beans xmlns=""
xmlns:xsi=""
xsi:schemaLocation="
"
bean id = "myJob" class="MyJob"
!--如果有注入屬性在這里寫 property name = "job" value="hihi"/property --
/bean
bean id = "myjobDetail" class = "org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"
property name="targetObject" ref="myJob"
/property
property name="targetMethod" value="execute"/property
/bean
bean id ="triggerBean" class="org.springframework.scheduling.quartz.CronTriggerBean"
property name="jobDetail" ref="myjobDetail"/
!-- 秒 分 小時(shí) 天 月 年--
property name="cronExpression" value="0 25 * * * ?"/
/bean
bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"
property name="triggers"
listref bean = "triggerBean"http://list
/property
/bean
/beans
在主類中讀取定義文件,任務(wù)計(jì)劃自動(dòng)運(yùn)行。
public class Test(){
public void static main(String[] args){
ApplicationContext context = new ClassPathXmlApplicationContext("beans-config.xml");
}
}
將配置文件放在該項(xiàng)目的classpath下,一般你放在src目錄下即可。也可以自己創(chuàng)建路徑放置,在項(xiàng)目的.classpath中可配置下此路徑。
最后導(dǎo)入spring的jar包就可以了。
求一個(gè)簡(jiǎn)單的Java定時(shí)器源代碼
我是讓它每10毫秒掃描一下。
Calendar ca=null;
Calendar ca1=null;
Timer timer=new Timer();
static Connection con=null;
public void chu(){
ca=Calendar.getInstance();
ca1=(Calendar)ca.clone();
ca1.add(Calendar.SECOND, 20);
}
public void Time(){
float s=ca1.get(Calendar.SECOND)-ca.get(Calendar.SECOND)+(ca1.get(Calendar.MILLISECOND)-ca.get(Calendar.MILLISECOND))/1000f;
if(con==null){
System.out.println("耗時(shí)"+String.valueOf(s)+"秒");
if(ca.after(ca1)){
System.out.println("取不到連接");
timer.cancel();
return ;
}
}else{
System.out.println("耗時(shí)"+String.valueOf(s)+"秒");
}
ca.add(Calendar.MILLISECOND, 10);
timer.schedule(
new TimerTask() {
public void run() {
System.out.println("時(shí)間在溜走。。。。");
Time();
}
}, ca.getTime());
}
void getcon(){
Connection con=null;//獲取Connection
chu();
Time();
}
在Java中如何設(shè)置一個(gè)定時(shí)任務(wù)的代碼應(yīng)該怎么寫?
指定定時(shí)任務(wù)的代碼如下:
public void schedule(TimerTask task,Date time)
比如,我們希望定時(shí)任務(wù)2006年7月2日0時(shí)0分執(zhí)行,只要給第二個(gè)參數(shù)傳一個(gè)時(shí)間設(shè)置為2006年7月2日0時(shí)0分的Date對(duì)象就可以了.
有一種情況是,可能我們的程序啟動(dòng)的時(shí)候,已經(jīng)是2006年7月3日了,這樣的話,程序一啟動(dòng),定時(shí)任務(wù)就開始執(zhí)行了.
schedule最后一個(gè)重載的方法是
public void schedule(TimerTask task,Date firstTime,long period)
既然號(hào)稱是定時(shí)任務(wù),我們肯定希望由我們來指定任務(wù)指定的時(shí)間,顯然上面的方法就不中用了,因?yàn)槲覀儾恢莱绦蚴裁磿r(shí)間開始運(yùn)行,就沒辦法確定需要延時(shí)多少.沒關(guān)系,schedule四個(gè)重載的方法還沒用完呢.用下面這個(gè)就OK了。
java消息定時(shí)推送怎么實(shí)現(xiàn)
定時(shí)任務(wù)實(shí)現(xiàn)的幾種方式:
Timer:這是java自帶的java.util.Timer類,這個(gè)類允許你調(diào)度一個(gè)java.util.TimerTask任務(wù)。使用這種方式可以讓程序按照某一個(gè)頻度執(zhí)行,但不能在指定時(shí)間運(yùn)行。一般用的較少。
ScheduledExecutorService:也jdk自帶的一個(gè)類;
是基于線程池設(shè)計(jì)的定時(shí)任務(wù)類,每個(gè)調(diào)度任務(wù)都會(huì)分配到線程池中的一個(gè)線程去執(zhí)行,也就是說,任務(wù)是并發(fā)執(zhí)行,互不影響。Spring Task:Spring3.0以后自帶的task,可以看成一個(gè)輕量級(jí)的Quartz,而且使用起來比Quartz簡(jiǎn)單許多。
Quartz:這是一個(gè)功能比較強(qiáng)大的的調(diào)度器,可以讓程序在指定時(shí)間執(zhí)行,也可以按照某一個(gè)頻度執(zhí)行,配置起來稍顯復(fù)雜。
消息推送推薦選擇極光推送軟件,JPush 是經(jīng)過考驗(yàn)的大規(guī)模 App 推送平臺(tái),每天推送消息量級(jí)為數(shù)百億條。 開發(fā)者集成 SDK 后,可以通過調(diào)用 API 推送消息。同時(shí),JPush 提供可視化的 web 端控制臺(tái)發(fā)送通知,統(tǒng)計(jì)分析推送效果。 JPush 全面支持 Android, iOS, Winphone 三大手機(jī)平臺(tái)。
新聞標(biāo)題:定時(shí)發(fā)布java代碼 java怎么寫定時(shí)任務(wù)
轉(zhuǎn)載來于:http://www.dlmjj.cn/article/doigjds.html