當前位置:首頁 » 編程語言 » javatimer定時

javatimer定時

發布時間: 2022-06-14 05:35:31

java定時分配

我們可以使用Timer和TimerTask類在java中實現定時任務,詳細說明如下:

1、基礎知識
java.util.Timer
一種線程設施,用於安排以後在後台線程中執行的任務。可安排任務執行一次,或者定期重復執行。此類是線程安全的:多個線程可以共享單個 Timer 對象而無需進行外部同步。
java.util.TimerTask
由 Timer 安排為一次執行或重復執行的任務。

2、示例代碼
該示例實現這樣一個功能,在系統運行期間,每30分鍾,系統自動檢查連接池中的可用連接數,並輸出到日誌中。
首先創建一個需要定時執行的任務類,這個任務類需要繼承TimerTask,然後重寫run()方法,run()方法體中的代碼就是定時需要執行的操作,在本demo中,就是獲取連接池中當前可用連接數,並輸出到日誌中,具體實現代碼如下:
public class TaskAvailableConnectNumber extends TimerTask {
private Logger log = Logger.getLogger(TaskAvailableConnectNumber.class);
private ConnectionPool pool=ConnectionPool.getInstance();
@Override
publicvoid run() {
log.debug("當前連接池中可用連接數"+pool.getAvailableConnectNumber());
}
}
下面定義一個監聽器,負責在應用伺服器啟動時打開定時器,監聽器需要實現ServletContextListener介面,並重寫其中的contextInitialized()和contextDestroyed()方法,代碼如下:
public class OnLineListener implements ServletContextListener{
private Logger log = Logger.getLogger(OnLineListener.class);
Timer timer = null;
//在應用伺服器啟動時,會執行該方法
publicvoid contextInitialized(ServletContextEvent arg0) {
//創建一個定時器,用於安排需要定時執行的任務。
timer = new Timer();
//為定時器安排需要定時執行的任務,該任務就是前面創建的任務類TaskAvailableConnectNumber,並指定該任務每30分鍾執行一次。
timer.schele(new TaskAvailableConnectNumber(), 0, 30*60*1000);
log.debug("啟動定時器");
}
//應用伺服器關閉時,會執行該方法,完成關閉定時器的操作。
public void contextDestroyed(ServletContextEvent arg0) {
if(timer!=null){
timer.cancel();//關閉定時器
log.debug("-----定時器銷毀--------");
}
}
}
監聽器要想正常運行,需要在web.xml文件中進行配置,配置信息如下:
<!-- 監聽器配置開始 -->
<listener>
<listener-class>
cn.sdfi.listen.OnLineListener
</listener-class>
</listener>
<!-- 監聽器配置結束 -->
以上步驟完成後,一個簡單的定時器就算開發完成了。

❷ java timer定時執行的疑問。

執行開始=記時開始 。。時間間隔。。再執行

❸ java 定時器 timer

很簡單的一個程序,兩種實現方式,可以弄一個線程在一個while循環里一直跑,一次sleep一分鍾,判斷當前時間是否是你要的時間,如果是就觸發你的任務。
另外一種方法是,直接計劃三個任務,到時間它會自己執行:new Timer().schele(task, time);

❹ java timer怎麼才配置具體的定時任務去調用方法去執行呢

TimerTask那定義一個變數 private static boolean going = false; 然後修改run方法 public void run() { if (going)return; going = true; //做你的事情 going = false; } 這個可以保證2秒執行一次,如果一次任務超過兩秒,下一次執行會在開始就結束。等待兩秒後再檢查 如果希望前一次任務若超過兩秒,後一次直接在前一次執行結束立即開始 可以換用Thread Thread t = new Thread(){ private static boolean going = true; public void run() { while(going){ int start = System.currentTimeMillis(); //做你的事 int cost = System.currentTimeMillis() - start; if (cost < 2000) { try{ sleep(2000 - cost); }catch(Exception ex){} } } } }; t.start();

❺ java語言的Timer的定時問題

Timer只會同時執行一個線程,也就是說,前一個執行時間過長,它會等前一個執行完,再執行下一個。

❻ 用java里timer執行定時任務,怎麼寫

Timer
timer
=
new
Timer();
timer.schele(new
MyTask(),
firstTime,
24*60*60*1000L);
timer.schele(new
MyTask(),
secondTime,24*60*60*1000L);
timer.schele(new
MyTask(),
ThirdTime,
24*60*60*1000L);
其中三個時間分別為一天的8:00/12:00/14:00點,可以用SimpleDateFormat類

❼ java Timer 定時執行任務

你今天在8點的時候運行了這個程序,並且不退出,明天8點的時候自動就執行了

❽ Java中Timer定時器是怎麼實現的

自己開一條線程
new Thread(new Runnable() {

@Override

public void run() {

try {

Thread.currentThread().sleep(1000);

System.out.println("時間增加了!!");

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}).start();

❾ java定時器用什麼實現

java定時器的使用(Timer)
1、在應用開發中,經常需要一些周期性的操作,比如每5分鍾執行某一操作等。
對於這樣的操作最方便、高效的實現方式就是使用java.util.Timer工具類。
private java.util.Timer timer;
timer = new Timer(true);
timer.schele(
new java.util.TimerTask() { public void run()
{ //server.checkNewMail(); 要操作的方法} }, 0, 5*60*1000);
第一個參數是要操作的方法,第二個參數是要設定延遲的時間,第三個參
數是周期的設定,每隔多長時間執行該操作。
使用這幾行代碼之後,Timer本身會每隔5分鍾調用一遍
server.checkNewMail()方法,不需要自己啟動線程。Timer本身也是多線程同
步的,多個線程可以共用一個Timer,不需要外部的同步代碼。
2、
(1)Timer.schele(TimerTask task,Date time)安排在制定的時間執行指定的
任務。
(2)Timer.schele(TimerTask task,Date firstTime ,long period)安排指定
的任務在指定的時間開始進行重復的固定延遲執行.
(3)Timer.schele(TimerTask task,long delay)安排在指定延遲後執行指定的
任務.
(4)Timer.schele(TimerTask task,long delay,long period)安排指定的任務
從指定的延遲後開始進行重復的固定延遲執行.
(5)Timer.scheleAtFixedRate(TimerTask task,Date firstTime,long period)
安排指定的任務在指定的時間開始進行重復的固定速率執行.
(6)Timer.scheleAtFixedRate(TimerTask task,long delay,long period)安
排指定的任務在指定的延遲後開始進行重復的固定速率執行.
用Java Timer API 進行時間調度開發的相關注意點
java.util這個包中可以找到Timer和TimerTask這兩個類。Timer直接從Object
繼承,它相當於一個計時器,能夠用它來指定某個時間來執行一項任務,或者
每隔一定時間間隔反復執行同一個任務。創建一個Timer後,就會生成一個線程
在背後運行,來控制任務的執行。而TimerTask就是用來實現某項任務的類,
它實現了Runnable介面,因此相當於一個線程。

❿ java 中定時器timer是被什麼觸發的

java中有個定時任務java.util.TimerTask用法很簡單class MyTask extends java.util.TimerTask{@Overridepublic void run() {// 這個任何所執行的代碼}}java.util.Timer timer = new Timer(true);//treu就是守護線程MyTask task = new MyTask();//開始執行任務,第一個參數是任務,第二個是延遲時間,第三個是每隔多長時間執行一次timer.schele(task, 0 , 1000 * 60 * 60 * 24);

熱點內容
滴滴蘋果安卓哪個派單量好 發布:2024-05-03 02:22:52 瀏覽:288
lua編程pdf 發布:2024-05-03 01:39:26 瀏覽:24
臍帶血存儲的三大忌 發布:2024-05-03 01:32:38 瀏覽:934
寶馬可編程 發布:2024-05-03 01:32:20 瀏覽:226
匿名ftp的作用 發布:2024-05-03 01:30:13 瀏覽:420
php支付程序 發布:2024-05-03 01:07:09 瀏覽:287
安卓插口是什麼型號圖片 發布:2024-05-03 01:01:57 瀏覽:253
移動android開發 發布:2024-05-03 00:26:42 瀏覽:628
安卓上的字體怎麼放大 發布:2024-05-03 00:26:38 瀏覽:304
奧迪a3低配中配推薦哪個配置 發布:2024-05-03 00:22:12 瀏覽:242