❶ 請問JAVA中,怎麼設置程序的運行間隔,Timer應該怎麼用
publicclasstimerextendsThread
{
publicstaticvoidmain(String[]args)
{
timerrunner=newtimer();
runner.start();
}
publicvoidrun(){
for(inti=0;i<10;i++){
System.out.println(i);
try{
Thread.sleep(1000);//睡眠1000毫秒
}catch(InterruptedExceptione){e.printStackTrace();}
}
}
}
❷ 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 timer wait函數怎麼用
Timer 是一種定時器工具,用來在一個後台線程計劃執行指定任務,這些任務可以被執行一次,也可以被定期執行。每個 Timer 對象對應一個後台線程,順序地執行所有計時器任務。如果完成某個計時器任務的時間太長,那麼它會「獨占」計時器的任務執行線程,從而可能延遲後續任務的執 行。對 Timer 對象最後的引用完成並且所有未處理的任務都已執行完成後,計時器的任務執行線程會正常終止(並且成為垃圾回收的對象)。TimerTask是一個抽象類, 實現了Runable介面,它的子類代表一個可以被Timer計劃的任務。
1) 一個簡單的Demo,讓大家對Timer、TimerTask的使用有感性的認識。
2) Timer和TimerTask的常用api函數說明
這里強調Timer類的schele和scheleAtFixedRate的區別。schele和 scheleAtFixedRate的區別在於,schele以固定的相對時間間隔執行,如果某一次執行被延時了,往後的執行的執行時間也會相對 延時;而scheleAtFixedRate是以絕對的時間間隔執行,如果某一次執行被延時,它的後一次執行的延時將會縮短 (scheleAtFixedRate會把已經過去的時間也作為周期執行)。schele注重的是時間間隔的穩定,而 scheleAtFixedRate注重的是執行頻率的穩定。
3) Timer的終止
默認情況下,只要一個程序的timer線程在運行,那麼這個程序就會保持運行。當然,你可以通過以下四種方法終止一個timer線程:
a)調用timer的cancle方法。你可以從程序的任何地方調用此方法,甚至在一個timer task的run方法里;
b)讓timer線程成為一個daemon線程(可以在創建timer時使用new Timer(true)達到這個目地),這樣當程序只有daemon線程的時候,它就會自動終止運行;
c)當timer相關的所有task執行完畢以後,刪除所有此timer對象的引用(置成null),這樣timer線程也會終止;
d)調用System.exit方法,使整個程序(所有線程)終止。
總結:Timer和TimerTask可以簡單理解為Timer定時器在觸發TimerTask任務調用,通常用schele和 scheleAtFixedRate方法來調用timertask任務,cancle來終止任務調用。Timer簡單易用,比較適合提供輕量級的計時 器功能,但是對時效性很強的任務調度請用其它方法來實現(正如javadoc所述」Timer does not offer real-time guarantees: it scheles tasks using the Object.wait(long) method」)。
❹ java timer類自動執行
javax.swing.Timer
在指定時間間隔觸發一個或多個 ActionEvent。一個示例用法是動畫對象,它將 Timer 用作繪制其幀的觸發器。
設置計時器的過程包括創建一個 Timer 對象,在該對象上注冊一個或多個動作偵聽器,以及使用 start 方法啟動該計時器。例如,以下代碼創建並啟動一個每秒(該時間由 Timer 構造方法的第一個參數指定)觸發一次動作事件的計時器。Timer 構造方法的第二個參數指定接收計時器動作事件的偵聽器。
int delay = 1000; //milliseconds
ActionListener taskPerformer = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
//...Perform a task...
}
};
new Timer(delay, taskPerformer).start();構造 Timer 時要指定一個延遲參數和一個 ActionListener。延遲參數用於設置初始延遲和事件觸發之間的延遲(以毫秒為單位)。啟動了計時器後,它將在向已注冊偵聽器觸發第一個 ActionEvent 之前等待初始延遲。第一個事件之後,每次超過事件間延遲時它都繼續觸發事件,直到被停止。
構造之後,可以單獨更改初始延遲和事件間延遲,並且可以添加其他 ActionListener。
如果希望計時器只在第一次時觸發然後停止,可以對計時器調用 setRepeats(false)。
盡管所有 Timer 都使用一個共享線程(由第一個執行操作的 Timer 對象創建)執行等待,但是 Timer 的動作事件處理程序還會在其他線程(事件指派線程上)執行。這意味著 Timer 的操作處理程序可以安全地在 Swing 組件上執行操作。但是,它也意味著處理程序必須快速執行以保證 GUI 作出響應。
在 1.3 版本中,向 Java 平台添加了另一個 Timer 類:java.util.Timer。該類和 javax.swing.Timer 的基本功能相同,但是 java.util.Timer 更常用,功能更多。javax.swing.Timer 有兩個特徵,它們可以讓使用 GUI 更方便。首先,其事件處理程序都是 GUI 程序員所熟悉的,並且可以更簡單地處理事件指派線程。第二,其自動線程共享意味著不必採取特殊步驟來避免生成過多線程。相反,計時器使用同一個線程讓游標閃爍、使工具提示顯示等等。
new Timer().schele(new TimerTask(){
public void run() {
System.exit(0);
}}, 5000);
5秒後自動運行run里的內容,如果setRepeats(ture),5秒一個周期的自動運行。
❺ java中Timerr如何使用
//是Timer計時器吧,
//創建對象
Timer time = new Timer();
//計時器重復任務對象
TimerTask task = new TimerTask() {
/**
* 實現計時器對象的介面方法
*/
@Override
public void run() {
//這里需要重復運行的代碼快
}
};
//安排指定的任務在指定的時間開始進行重復的固定延遲執行。
time.schele(task, 300, 300);
這是重復的一個計時器用法,其他的可以直接查看jdk文檔幫助.
❻ java timer 用法
import java.util.Timer;
public class TimerTest1 {
static class MyTask extends java.util.TimerTask {
public void run() {
System.out.println("開始");
}
}
static class Shutdown extends java.util.TimerTask {
Timer timer = null;
public Shutdown() {
}
public Shutdown(Timer mytimer) {
timer = mytimer;
}
public void run() {
System.out.println("結束");
timer.cancel();// 使用這個方法退出任務
}
}
public static void main(String[] args) {
Timer timer = new Timer();
timer.schele(new MyTask(), 1000);// 在1秒後執行此任務
timer.schele(new Shutdown(timer), 3000);// 在3秒後執行此任務
}
}
❼ java如何讓一個定時器終止一段時間
java中讓定時器終止的方法是使用timer的cancel方法,實例如下:
importjava.util.Timer;
importjava.util.TimerTask;
publicclassMain{
Timertimer;
publicMain(intseconds){
timer=newTimer();
timer.schele(newToDoTask(),seconds*1000);//定時器開始執行
}
classToDoTaskextendsTimerTask{
publicvoidrun(){
System.out.println("working");
timer.cancel();//定時器終止
}
}
publicstaticvoidmain(Stringargs[]){
newMain(5);
}
}
❽ 用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怎麼才配置具體的定時任務去調用方法去執行呢
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里swing包里 timer方法 怎麼用
str =((JBotton)e).getText();
if("上一個".equals(str)){
這樣就可以