新聞中心
如何讓java定時執(zhí)行一個方法
現(xiàn)在能想到的是三種方法能實現(xiàn):
在新鄭等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務理念,為客戶提供成都網(wǎng)站設計、成都網(wǎng)站建設 網(wǎng)站設計制作按需網(wǎng)站建設,公司網(wǎng)站建設,企業(yè)網(wǎng)站建設,成都品牌網(wǎng)站建設,成都全網(wǎng)營銷,成都外貿(mào)網(wǎng)站建設,新鄭網(wǎng)站建設費用合理。
1、普通thread實現(xiàn)
:是最常見的,創(chuàng)建一個thread,然后讓它在while循環(huán)里一直運行著,通過sleep方法來達到定時任務的效果。
2、timertask
:啟動和去取消任務時可以控制,第一次執(zhí)行任務時可以指定你想要的delay時間。
3、scheduledexecutorservice實現(xiàn)
:最理想的定時任務實現(xiàn)方式,相比于timer的單線程,它是通過線程池的方式來執(zhí)行任務的,可以很靈活的去設定第一次執(zhí)行任務delay時間,提供了良好的約定,以便設定執(zhí)行的時間間隔等。
希望能幫到你。
在Java中如何設置一個定時任務的代碼應該怎么寫?
指定定時任務的代碼如下:
public void schedule(TimerTask task,Date time)
比如,我們希望定時任務2006年7月2日0時0分執(zhí)行,只要給第二個參數(shù)傳一個時間設置為2006年7月2日0時0分的Date對象就可以了.
有一種情況是,可能我們的程序啟動的時候,已經(jīng)是2006年7月3日了,這樣的話,程序一啟動,定時任務就開始執(zhí)行了.
schedule最后一個重載的方法是
public void schedule(TimerTask task,Date firstTime,long period)
既然號稱是定時任務,我們肯定希望由我們來指定任務指定的時間,顯然上面的方法就不中用了,因為我們不知道程序什么時間開始運行,就沒辦法確定需要延時多少.沒關(guān)系,schedule四個重載的方法還沒用完呢.用下面這個就OK了。
Java 如何實現(xiàn)這樣的定時任務
JDK中,定時器任務的執(zhí)行需要兩個基本的類:
java.util.Timer;
java.util.TimerTask;
要運行一個定時任務,最基本的步驟如下:
1、建立一個要執(zhí)行的任務TimerTask。
2、創(chuàng)建一個Timer實例,通過Timer提供的schedule()方法,將 TimerTask加入到定時器Timer中,同時設置執(zhí)行的規(guī)則即可。
當程序執(zhí)行了Timer初始化代碼后,Timer定時任務就會按照設置去執(zhí)行。
Timer中的schedule()方法是有多種重載格式的,以適應不同的情況。該方法的格式如下:
void schedule(TimerTask task, Date time)
安排在指定的時間執(zhí)行指定的任務。
void schedule(TimerTask task, Date firstTime, long period)
安排指定的任務在指定的時間開始進行重復的固定延遲執(zhí)行。
void schedule(TimerTask task, long delay)
安排在指定延遲后執(zhí)行指定的任務。
void schedule(TimerTask task, long delay, long period)
安排指定的任務從指定的延遲后開始進行重復的固定延遲執(zhí)行。
Timer是線程安全的,此類可擴展到大量同時安排的任務(存在數(shù)千個都沒有問題)。其所有構(gòu)造方法都啟動計時器線程。可以調(diào)用cancel() 終止此計時器,丟棄所有當前已安排的任務。purge()從此計時器的任務隊列中移除所有已取消的任務。此類不提供實時保證:它使用 Object.wait(long) 方法來安排任務。
TimerTask是一個抽象類,由 Timer 安排為一次執(zhí)行或重復執(zhí)行的任務。它有一個抽象方法run()----計時器任務要執(zhí)行的操作。因此,每個具體的任務類都必須繼承TimerTask類,并且重寫run()方法。另外它還有兩個非抽象的方法:
boolean cancel()
取消此計時器任務。
long scheduledExecutionTime()
返回此任務最近實際 執(zhí)行的安排 執(zhí)行時間。
Java下定時執(zhí)行任務的方法有哪些?
1)java.util.Timer
這個方法應該是最常用的,不過這個方法需要手工啟動你的任務:
Timer timer=new Timer();
timer.schedule(new ListByDayTimerTask(),10000,86400000);
這里的ListByDayTimerTask類必須extends TimerTask里面的run()方法。
2)ServletContextListener
這個方法在web容器環(huán)境比較方便,這樣,在web server啟動后就可以
自動運行該任務,不需要手工操作。
將ListByDayListener implements ServletContextListener接口,在
contextInitialized方法中加入啟動Timer的代碼,在contextDestroyed
方法中加入cancel該Timer的代碼;然后在web.xml中,加入listener:
詳細教程請參考:
java代碼:如何定時執(zhí)行任務,例如每天的12點整執(zhí)行System.out.println("now");
如果你是在項目中使用,用quartz,如何使用自己搜索。
如果你只是做測試,可用線程。
public class Test implements Runable{
public void run() throws Exception{
while(true){
long time = System.currentTime().getTime();
if(判斷time是否是12:00){
System.out.println("");
}
sleep(1000); // 暫時1秒.
}
}
}
//main方法中
Thread t = new Thread(new Test());
t.start();
網(wǎng)頁名稱:定時任務執(zhí)行java代碼,java定時任務指定時間執(zhí)行
網(wǎng)站網(wǎng)址:http://www.dlmjj.cn/article/dsgeoeh.html