導航:首頁 > 編程語言 > java如何啟動定時任務

java如何啟動定時任務

發布時間:2023-07-05 14:35:42

① 怎樣直接調用定時任務 java

java中設置定時任務用Timer類可以實現。 一、延時執行 首先,我們定義一個類,給它取個名字叫TimeTask,我們的定時任務,就在這個類的main函數里執行。代碼如下: package test; import java.util.Timer; public class TimeTask { public static

② JAVA 怎麼自動定時運行一個方法

spring 的定時器。
<!-- 影票系統定時任務 -->
<bean name="quartzFactoryBean"
class="org.springframework.scheling.quartz.SchelerFactoryBean">
<property name="triggers">
<list>
<!--
<ref bean="filmtrigger" />
<ref bean="filmtrigger2" />
<ref bean="filmtrigger3" />
<ref bean="filmtrigger4" />
<ref bean="filmtrigger5" />
<ref bean="filmtrigger6" />
這里隨便配置
-->
</list>
</property>
</bean>

<bean name="filmtrigger" class="org.springframework.scheling.quartz.CronTriggerBean">
<property name="jobDetail" ref="filmjob" />
<property name="cronExpression" value="0 1 0 * * ?" /> 0時 1分 0秒啟動
<!-- <property name="startDelay" value="3"/> -->
</bean>

<bean id="filmjob"
class="org.springframework.scheling.quartz.">
//下面配置在那個類的那個方法使用定時
<property name="targetObject" ref="類" />
<property name="targetMethod" value="方法" />
<property name="concurrent" value="false" />
</bean>

③ java 定時任務的幾種實現方式

  1. JDK 自帶的定時器實現

    // schele(TimerTask task, long delay) 延遲 delay 毫秒 執行
    // schele(TimerTask task, Date time) 特定時間執行
    public static void main(String[] args) {
    for (int i = 0; i < 10; ++i) {
    new Timer("timer - " + i).schele(new TimerTask() {
    @Override
    public void run() {
    println(Thread.currentThread().getName() + " run ");
    }
    }, 1000);
    }
    }
    2. Quartz 定時器實現

    //首先我們需要定義一個任務類,比如為MyJob02 ,
    //該類需要繼承Job類,然後添加execute(JobExecutionContext context)方法,在
    //這個方法中就是我們具體的任務執行的地方。
    //由希望由調度程序執行的組件實現的介面
    public class MyJob02 implements Job {
    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
    // TODO Auto-generated method stub
    // 執行響應的任務.
    System.out.println("HelloJob.execute,"+new Date());
    }
    }

    public class QuartzTest5 {

    public static void main(String[] args) throws Exception {
    //SchelerFactory 是一個介面,用於Scheler的創建和管理
    SchelerFactory factory = new StdSchelerFactory();
    //從工廠裡面拿到一個scheler實例
    //計劃表(可能翻譯的不太貼切),現在我們有了要做的內容,
    //與調度程序交互的主要API
    /*
    * Scheler的生命期,從SchelerFactory創建它時開始,
    到Scheler調用shutdown()方法時結束;Scheler被創建後,
    可以增加、刪除和列舉Job和Trigger,以及執行其它與調度相關的操作
    (如暫停Trigger)。但是,Scheler只有在調用start()方法後,
    才會真正地觸發trigger(即執行job)
    */
    Scheler scheler = factory.getScheler();
    //具體任務.
    //用於定義作業的實例
    //JobBuilder - 用於定義/構建JobDetail實例,用於定義作業的實例。
    JobDetail job = JobBuilder.newJob(MyJob.class).withIdentity("job1", "group1").build();


    //Trigger(即觸發器) - 定義執行給定作業的計劃的組件
    //TriggerBuilder - 用於定義/構建觸發器實例
    CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "group1")
    .withSchele(CronScheleBuilder.cronSchele("0/1 * * * * ?")).build();
    scheler.scheleJob(job, trigger);
    scheler.start();


    }
    3. Spring boot 任務調度(這個非常容易實現)

    /*
    * 開啟對定時任務的支持
    * 在相應的方法上添加@Scheled聲明需要執行的定時任務。
    */
    @EnableScheling
    //@EnableScheling註解來開啟對計劃任務的支持
    public class Application {

    public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
    }
    }

    @Component
    public class ScheledTasks {
    private Logger logger = LoggerFactory.getLogger(ScheledTasks.class);
    private int i=0;
    //0 0 0 2 * ?
    @Scheled(cron="* * * 2 * ?")
    //@Scheled 註解用於標注這個方法是一個定時任務的方法
    public void testFixDelay() {
    logger.info("執行方法"+i++);
    }

④ java代碼啟動一個定時任務

在應用里經常都有用到在後台跑定時任務的需求。舉個例子,比如需要在服務後台跑一個定時任務來進行非實時計算,清除臨時數據、文件等。在本文里,3種不同的實現方法:
普通thread實現
TimerTask實現
ScheledExecutorService實現

1.普通thread

這是最常見的,創建一個thread,然後讓它在while循環里一直運行著,通過sleep方法來達到定時任務的效果。這樣可以快速簡單的實現,代碼如下:

public class Task1 {
public static void main(String[] args) {
// run in a second
final long timeInterval = 1000;
Runnable runnable = new Runnable() {
public void run() {
while (true) {
// ------- code for task to run
System.out.println("Hello !!");
// ------- ends here
try {
Thread.sleep(timeInterval);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
};
Thread thread = new Thread(runnable);
thread.start();
}
}

2.用Timer和TimerTask

上面的實現是非常快速簡便的,但它也缺少一些功能。
用Timer和TimerTask的話與上述方法相比有如下好處:

當啟動和去取消任務時可以控制
第一次執行任務時可以指定你想要的delay時間

在實現時,Timer類可以調度任務,TimerTask則是通過在run()方法里實現具體任務。
Timer實例可以調度多任務。
當Timer的構造器被調用時,創建了一個線程,這個線程可以用來調度任務:

import java.util.Timer;
import java.util.TimerTask;
public class Task2 {
public static void main(String[] args) {
TimerTask task = new TimerTask() {
@Override
public void run() {
// task to run goes here
System.out.println("Hello !!!");
}
};
Timer timer = new Timer();
long delay = 0;
long intevalPeriod = 1 * 1000;
// scheles the task to be run in an interval
timer.scheleAtFixedRate(task, delay,
intevalPeriod);
} // end of main
}

3.ScheledExecutorService

ScheledExecutorService是從Java SE 5的java.util.concurrent里,做為並發工具類被引進的,這是最理想的定時任務實現方式。
相比於上兩個方法,它有以下好處:

相比於Timer的單線程,它是通過線程池的方式來執行任務的
可以很靈活的去設定第一次執行任務delay時間
提供了良好的約定,以便設定執行的時間間隔

通過ScheledExecutorService#scheleAtFixedRate展示這個例子,通過代碼里參數的控制,首次執行加了delay時間:

import java.util.concurrent.Executors;
import java.util.concurrent.ScheledExecutorService;
import java.util.concurrent.TimeUnit;
public class Task3 {
public static void main(String[] args) {
Runnable runnable = new Runnable() {
public void run() {
// task to run goes here
System.out.println("Hello !!");
}
};
ScheledExecutorService service = Executors
.();
service.scheleAtFixedRate(runnable, 0, 1, TimeUnit.SECONDS);
}
}

⑤ java:如何使用 quartz定時執行任務,例如定時執行System.out.pintln("aa");看清楚用quartz

}
importstaticorg.quartz.CronScheleBuilder.cronSchele;
importstaticorg.quartz.JobBuilder.newJob;
importstaticorg.quartz.TriggerBuilder.newTrigger;

importjava.text.SimpleDateFormat;
importjava.util.Date;

importorg.quartz.CronTrigger;
importorg.quartz.JobDetail;
importorg.quartz.Scheler;
importorg.quartz.SchelerFactory;
importorg.quartz.impl.StdSchelerFactory;

publicclassTest{
publicvoidgo()throwsException{
//首先,必需要取得一個Scheler的引用
SchelerFactorysf=newStdSchelerFactory();
Schelersched=sf.getScheler();
//jobs可以在scheled的sched.start()方法前被調用

//job1將每隔30分鍾執行一次
JobDetailjob=newJob(myJob.class).withIdentity("job1","group1").build();
CronTriggertrigger=newTrigger().withIdentity("trigger1","group1").withSchele(cronSchele("00/30***?")).build();
Dateft=sched.scheleJob(job,trigger);
SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-ddHH:mm:ssSSS");
System.out.pintln("aa");


//開始執行,start()方法被調用後,計時器就開始工作,計時調度中允許放入N個Job
sched.start();
try{
//主線程等待一分鍾
Thread.sleep(60L*1000L);
}catch(Exceptione){}
//關閉定時調度,定時器不再工作
sched.shutdown(true);
}

publicstaticvoidmain(String[]args)throwsException{

Testtest=newTest();
test.go();
}

}

⑥ JAVA怎麼定時啟動服務進程(滿意答案給高分)

1、while(true) {
if (當前時間到了11點) {
做你的Task();
}
Thread.sleep(30*1000); //sleep 30 seconds
}

2、寫一個.bat文件(裡面調用你的Java類),用Windows的計劃任務,每天11點執行這個.bat文件。
3、用開源的Quartz框架,專門做定時任務的。可能需要下載,看看文檔,寫幾個配置文件。

推薦第三種,最專業的。

⑦ 在Java中如何設置一個定時任務的代碼應該怎麼寫

指定定時任務的代來碼如下自:

public void schele(TimerTask task,Date time)

比如,我們希望定時任務2006年7月2日0時0分執行,只要給第二個參數傳一個時間設置為2006年7月2日0時0分的Date對象就可以了.

有一種情況是,可能我們的程序啟動的時候,已經是2006年7月3日了,這樣的話,程序一啟動,定時任務就開始執行了.

schele最後一個重載的方法是

public void schele(TimerTask task,Date firstTime,long period)

閱讀全文

與java如何啟動定時任務相關的資料

熱點內容
5g網路什麼時候普及河北邢台 瀏覽:709
編程和運營哪個更適合創業 瀏覽:893
尤里x怎麼升級 瀏覽:399
做業務績效考核需要哪些數據 瀏覽:433
dnf85版本劍魔刷圖加點 瀏覽:407
手機硬碟測試架可以讀取哪些數據 瀏覽:704
ug前後處理結算結果找不到文件 瀏覽:769
網頁框架拆分代碼 瀏覽:382
未來十年網路安全有什麼影響 瀏覽:362
win10更新後進不了劍靈 瀏覽:243
iphone471激活出錯 瀏覽:648
怎麼把文件拷到u盤 瀏覽:620
中伊簽署文件視頻 瀏覽:661
電信光寬頻網路不穩定 瀏覽:504
網路崗軟路由 瀏覽:995
黑莓z10在哪裡下載app 瀏覽:310
net批量下載文件 瀏覽:696
怎麼把蘋果一體機文件拷貝 瀏覽:117
sql文件怎麼寫 瀏覽:9
帝豪ec718導航升級 瀏覽:257

友情鏈接