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

java定時器

發布時間: 2022-01-24 10:06:46

java 定時器

把列印和寫文件放在一個TimerTask子類中
然後通過Timer.scheledAtFixTime()啟動這個task
具體參數請參考API

但是我不太明白你指的「定時器只有延時86400000毫秒(24小時)才能實現,」是什麼意思

Ⅱ java類中的定時器

quartz中用有狀態的任務,他會在重復執行任務前判斷上一次是否已完成。

Ⅲ java 定時器問題

用多線程吧。用主線程式控制制時間,寫一個新的線程類執行流程。每次在主線程5000睡眠後就創建新線程對象,新線程對象只執行一次。不過需要注意,如果你在處理相同的數據塊,要注意創建的線程對象中的同步

Ⅳ 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 tt=new Timer();//定時類
tt.schele(new TimerTask(){
@Override
public void run() {
System.out.println("一句話");
}
}, 0,4000);//從0秒開始,每隔4秒執行一次

Ⅵ java 定時器 timer

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

Ⅶ java中怎麼實現定時功能

這個是我在網上找的不知道是不是你要的:

java定時任務Timer 關於定時任務,似乎跟時間操作的聯系並不是很大,但是前面既然提到了定時任務,索性在這里一起解決了。設置定時任務很簡單,用Timer類就搞定了。一、延時執行首先,我們定義一個類,給它取個名字叫TimeTask,我們的定時任務,就在這個類的main函數里執行。代碼如下:
package test;
import java.util.Timer;
public class TimeTaskTest {
public static void main(String[] args){ Timer timer = new Timer();
timer.schele(new Task(), 60 * 1000);
}
}
解釋一下上面的代碼。上面的代碼實現了這樣一個功能,當TimeTask程序啟動以後,過一分鍾後執行某項任務。很簡單吧:先new一個Timer對象,然後調用它的schele方法,這個方法有四個重載的方法,這里我們用其中一個,
public void schele(TimerTask task,long delay)
首先,第一個參數第一個參數就是我們要執行的任務。這是一個TimerTask對象,確切點說是一個實現TimerTask的類的對象,因為TimerTask是個抽象類。上面的代碼里 面,Task就是我們自己定義的實現了TimerTask的類,因為是在同一個包裡面,所以沒有顯性的import進來。Task類的代碼如下
package test;
import java.util.TimerTask;
public class Task extends TimerTask { public void run()
{
System.out.println("定時任務執行");
}
}
我們的Task必須實現TimerTask的方法run,要執行的任務就在這個run方法裡面,這里,我們只讓它往控制台打一行字。第二個參數第二個參數是一個long型的值。這是延遲的時間,就是從程序開始以後,再過多少時間來執行定時任務。這個long型的值是毫秒數,所以前面我們的程序裡面,過一分鍾後執行用的參數值就是 60 * 1000。二、循環執行設置定時任務的時候,往往我們需要重復的執行這樣任務,每隔一段時間執行一次,而上面的方法是只執行一次的,這樣就用到了schele方法的是另一個重載函數public void schele(TimerTask task,long delay,long period)
前兩個參數就不用說什麼了,最後一個參數就是間隔的時間,又是個long型的毫秒數(看來java里涉及到時間的,跟這個long是脫不了干係了),比如我們希望上面的任務從第一次執行後,每個一分鍾執行一次,第三個參數值賦60 * 1000就ok了。三、指定執行時間既然號稱是定時任務,我們肯定希望由我們來指定任務指定的時間,顯然上面的方法就不中用了,因為我們不知道程序什麼時間開始運行,就沒辦法確定需要延時多少。沒關系,schele四個重載的方法還沒用完呢。用下面這個就OK了:
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)
沒必要說什麼了吧:)四、j2ee中的定時任務在實際的項目中,往往定時任務需要對web工程中的資源進行操作,這樣一來,用上面的單個程序的方式可能就有點力不從心了,因為很多web工程的資源它操作不到。解決的辦法是,使用Servlet,把執行定時任務的那些代碼放到Servlet的init()函數里就可以了,這個easy,就沒有必要再寫示例代碼了吧

Ⅷ java定時器

importjava.io.IOException;
importjava.util.Timer;

publicclassTimerTest{

publicstaticvoidmain(String[]args){
Timertimer=newTimer();
timer.schele(newMyTask(),1000,2000);//在1秒後執行此任務,每次間隔2秒,如果傳遞一個Data參數,就可以在某個固定的時間執行這個任務.
while(true){//這個是用來停止此任務的,否則就一直循環執行此任務了
try{
intch=System.in.read();
if(ch-'c'==0){
timer.cancel();//使用這個方法退出任務
}
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}

staticclassMyTaskextendsjava.util.TimerTask{
@Override
publicvoidrun(){
//TODOAuto-generatedmethodstub
System.out.println("________");
}
}
}

這段代碼基本能滿足你需求了 你還有需求就在上面再套一層job 當然如過太復雜了而且這種定時需求很多的話 建議用quartz框架 使用很簡單

Ⅸ java 定時器功能

這么干:
import java.util.Timer;
import java.util.TimerTask;

public class TimerTest {
public static void main(String[] args) {
final TimerTest test = new TimerTest();
Timer timer = new Timer();
timer.schele(new TimerTask() {

@Override
public void run() {
test.method1();
}
}, 0, 60000);

timer.schele(new TimerTask() {

@Override
public void run() {
test.method2();
}
}, 10000, 60000);

timer.schele(new TimerTask() {

@Override
public void run() {
test.method3();
}
}, 30000, 60000);

}

public void method1() {
System.out.println("method1 start!");
long startTime = System.currentTimeMillis();
long nowTime = System.currentTimeMillis();
while (nowTime - startTime < 10000) {
nowTime = System.currentTimeMillis();
}
System.out.println("method1 end!");
}

public void method2() {
System.out.println("method2 start!");
long startTime = System.currentTimeMillis();
long nowTime = System.currentTimeMillis();
while (nowTime - startTime < 20000) {
nowTime = System.currentTimeMillis();
}
System.out.println("method2 end!");
}

public void method3() {
System.out.println("method3 start!");
long startTime = System.currentTimeMillis();
long nowTime = System.currentTimeMillis();
while (nowTime - startTime < 30000) {
nowTime = System.currentTimeMillis();
}
System.out.println("method3 end!");
}
}

Ⅹ Java定時器的幾種用法

  1. 設定指定任務task在指定時間time執行schele(TimerTasktask,Datetime)

  2. 設定指定任務task在指定延遲delay後進行固定延遲peroid的執行

  3. 設定指定任務task在指定延遲delay後進行固定頻率peroid的執行

  4. 安排指定的任務task在指定的時間firstTime開始進行重復的固定速率period執行

熱點內容
伺服器的空島如何刷錢 發布:2024-11-15 09:40:52 瀏覽:262
安卓系統錄像設置在哪裡 發布:2024-11-15 09:36:33 瀏覽:917
電信級伺服器電腦 發布:2024-11-15 09:26:27 瀏覽:246
壓縮某個文件夾 發布:2024-11-15 09:03:11 瀏覽:891
網址能解壓嗎 發布:2024-11-15 08:54:09 瀏覽:933
python更改目錄 發布:2024-11-15 08:41:08 瀏覽:265
伺服器快閃記憶體可以裝在一般電腦上嗎 發布:2024-11-15 08:36:46 瀏覽:8
安卓手機怎麼查詢自己的路線軌跡 發布:2024-11-15 08:32:19 瀏覽:969
phpdatet 發布:2024-11-15 08:32:17 瀏覽:507
HDB3編解碼實驗 發布:2024-11-15 08:17:31 瀏覽:212