① java定時任務每天多個時間點怎麼辦
1、創建ScheledExecutorService對象,用於執行定時任務。
2、使用scheleAtFixedRate()方法來設置定時任務,該方法可以指定任務的初始舉斗延遲時間、任務運行周期等參數。
3、在定時任務的run()方法中編寫任務代碼,實現需要執行的業務邏輯。
4、在程序啟動時,調用鋒或ScheledExecutorService對象的shutdown()方法來關閉定時任務。正基磨
② java怎樣做定時器每天一點發送一條簡訊到的需求
如果想用框架的話推薦「Spring Schele定時任務」。
如果想自己簡單的實現的汪洞話可以使用java的Timer類和TimerTask類,它們配合可以每隔指定時間執行一次對應的Task,比較簡單,參考這篇博客,run函數中放你的發送消岩簡訊的代碼拿陵御就行了。
③ 求高手指點一二,我需要用java編寫一個定時器,每天8點開始執行,每一個小時執行一次,過了晚上12點停止
ScheledExecutorServiceservice=Executors.();
service.scheleAtFixedRate(newTimerTask(){
@Override
publicvoidrun(){
if(當前時間>8點){
dowork();//你要做的事
}
if(當前時間>12點){
this.cancel();
}
}
},0,1,TimeUnit.HOURS);
④ java定時器 每天凌晨 固定執行一個方法
可以通過以下方式實現,
public class TimerManager {
//時間間隔
private static final long PERIOD_DAY = 24 * 60 * 60 * 1000;
public TimerManager() {
Calendar calendar = Calendar.getInstance();
/*** 定製每日:00執行方法 ***/
calendar.set(Calendar.HOUR_OF_DAY, 2);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
Date date=calendar.getTime(); //第一次執行定時任務的時間
//如果第一次執行定時任務的時間 小於 當前的時間
//此時要在 第一次執行定時任務的時間 加一天,以便此任務在下個時間點執行。如果不加一天,任務會立即執行。
if (date.before(new Date())) {
date = this.addDay(date, 1);
}
Timer timer = new Timer();
NFDFlightDataTimerTask task = new NFDFlightDataTimerTask();
//安排指定的任務在指定的時間開始進行重復的固定延遲執行。
timer.schele(task,date,PERIOD_DAY);
}
// 增加或減少天數
public Date addDay(Date date, int num) {
Calendar startDT = Calendar.getInstance();
startDT.setTime(date);
startDT.add(Calendar.DAY_OF_MONTH, num);
return startDT.getTime();
}
}
public class NFDFlightDataTimerTask extends TimerTask {
private static Logger log = Logger.getLogger(NFDFlightDataTimerTask.class);
@Override
public void run() {
try {
//在這里寫你要執行的內容
} catch (Exception e) {
log.info("-------------解析信息發生異常--------------");
}
}
}
public class NFDFlightDataTaskListener implements ServletContextListener {
public void contextInitialized(ServletContextEvent event) {
new TimerManager();
}
public void contextDestroyed(ServletContextEvent event) {
}
}
然後要在web.xml裡面配置監聽器
<listener>
<listener-class>
com.listener.NFDFlightDataTaskListener
</listener-class>
</listener>
⑤ java代碼:如何定時執行任務,例如每天的12點整執行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();
⑥ Java 定時器,每天凌晨自動執行一個方法,用哪個好
用選擇間隔時長的那款!
⑦ java timer 定時器 想要實現 每天的 偶數點 的40 執行 方法 該怎麼實現
這個不難, 在timer 中獲得當前的時間,判斷小時數 和分鍾數
if(小洞顫時%2==0){
if(分鍾==40){
執行代碼
}
}
另外 timer 最好60秒執行一次, 不然在40分的時候 可能返消會執行多次漏顫知代碼,當然自己做判斷也可以。望採納
⑧ JAVA定時執行任務,每天定時幾點鍾執行任務
案例: 你想讓他幾點執行都ok
1.MyJob02
//首先我們需要定義一個任務類,比如為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());
}
2.
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();
}
⑨ Java定時器
好多朋友用過Windows的任務計劃 也有不少程序迷自己曾寫過時鍾報警 系統自動關機等趣味程散槐序 可卻很少有朋友在Web工程中實現過類似功能
當Web工程啟動時 定時器能自動開始計時 在整個Web工程的生命期里 定時器能在每晚深夜觸發一次任務 因此定時器的存放位置也值得考查 不能簡單的存在於單個Servlet或JavaBean中 必須能讓定時器宿主的存活期為整個Web工程生命期 在工程啟動時能自動載入運行 結合這兩點 跟 Servlet上下文有關的偵聽器就最合適不過了 通過在工程的配置文件中加以合理配置 會在工程啟動時自動運行 並在整個工程生命期中處於監聽狀態
下面就Servlet偵聽器結合Java定時器來講述整個實現過程 要運用Servlet偵鍵冊聽器需要實現 javax servlet ServletContextListener介面 同時實現它的contextInitialized (ServletContextEvent event)和contextDestroyed(ServletContextEvent event)兩個介面函數 考慮定時器有個建立和銷毀的過程 看了前面兩個介面函數 就不容置疑的把建立的過程置入 contextInitialized 把銷毀的過程置入contextDestroyed了
我把ServletContextListener的實現類取名為ContextListener 在其內添加一個定時器 示例代碼如下所示
import java util Timer;
import javax servlet ServletContextEvent;
import javax servlet ServletContextListener;
import javax servlet ServletException;
import javax servlet ServletRequest;
import javax servlet ServletResponse;
import javax servlet HttpServlet;
public class ContextListener
extends HttpServlet
implements ServletContextListener {
public ContextListener() {
}
private java util Timer timer = null;
public void contextInitialized(ServletContextEvent event) {
timer = new java util Timer(true);
event getServletContext() log( 定時器已啟動 );
timer schele(new MyTask(event getServletContext()) * * );
event getServletContext() log( 已經添加任務調度表 );
}
public void contextDestroyed(ServletContextEvent event) {
timer cancel();
event getServletContext() log( 定時器銷毀 );
}
}
以上代碼中 timer schele(new MyTask(event getServletContext()) * * )這一行為定時器調度語句 其中MyTask是自定義需要被調度的執行任務(在我的財政數據中心項目中就是報表計算引擎入口) 從 java util TimerTask繼承 下面會重點講述 第三個參數表示每小時(即 * * 毫秒)被觸發一次 中間參數 表示無延遲 其它代碼相當簡單 不再詳細說明
稿掘宏下面介紹MyTask的實現 上面的代碼中看到了在構造MyTask時 傳入了javax servlet ServletContext類型參數 是為記錄Servlet日誌方便而傳入 因此需要重載MyTask的構造函數(其父類java util TimerTask原構造函數是沒有參數的) 在timer schele()的調度中 設置了每小時調度一次 因此如果想實現調度任務每 小時被執行一次 還需要判斷一下時鍾點 以常量C_SCHEDULE_HOUR表示(晚上 點 也即 點) 同時為防止 小時執行下來 任務還未執行完(當然 一般任務是沒有這么長的) 避免第二次又被調度以引起執行沖突 設置了當前是否正在執行的狀態標志isRunning 示例代碼如下所示
import java util *;
import javax servlet ServletContextEvent;
import javax servlet ServletContextListener;
import javax servlet ServletException;
import javax servlet ServletRequest;
import javax servlet ServletResponse;
import javax servlet HttpServlet;
import javax servlet *;
public class MyTask extends TimerTask {
private static final int C_SCHEDULE_HOUR = ;
private static boolean isRunning = false;
private ServletContext context = null;
public MyTask() {
}
public MyTask(ServletContext context) {
ntext = context;
}
public void run() {
Calendar cal = Calendar getInstance();
if (!isRunning) {
if (C_SCHEDULE_HOUR == cal get(Calendar HOUR_OF_DAY)) {
isRunning = true;
context log( 開始執行指定任務 );
//TODO 添加自定義的詳細任務 以下只是示例
//系統定時接收郵件
Email email=new Email();
email recieve();
isRunning = false;
context log( 指定任務執行結束 );
}
}
else {
context log( 上一次任務執行還未結束 );
}
}
}
到這兒 ServletContextListener和MyTask的代碼都已完整了 最後一步就是把ServletContextListener部署到您的Web工程中去 在您工程的web xml配置文件中加入如下三行
<listener>
<listener class> test ContextListener</listener class>
</listener>
lishixin/Article/program/Java/hx/201311/26421
⑩ java定時器 每天12點 固定執行一個方法
Calendar cal = Calendar.getInstance();
//每天定點執行
cal.set(Calendar.HOUR_OF_DAY,12);
cal.set(Calendar.MINUTE,0);
cal.set(Calendar.SECOND,0);
Timer timer = new Timer();
timer.schele(new TimerTask() {
public void run() {
//執行的內內容容
}
},cal.getTime(), 24*60*60*1000);