1. java Timer定時器停止該怎麼辦
private void closeTimer() {
if (timerTask != null) {
timerTask.cancel();
timerTask = null;
}
if (mTimer != null) {
mTimer.cancel();
mTimer = null;
}
}
/**
* 計時操作 改變界面的倒計時信息
*/
private void timerOperation() {
recLen = RECENT_SECOND;
mTimer = new Timer();
timerTask = new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
recLen--;
if (recLen >= 0) {
Message msg = new Message();
msg.what = SECOND_UPDATE;
msg.arg1 = recLen;
handler.sendMessage(msg);
}
}
};
mTimer.schele(timerTask, PROGRESS_DELAY, PROGRESS_PERIOD);
}
2. 關於java定時器停止問題Timer類的
樓上的我沒有試,但是我可以看出,你這是一個邏輯上的混亂。
1.首先,
if(i==3){
new Test().cancel();
}
你這個i永遠都不可能=3,因為你拿到是全局變數i的默認值,而你run() 方法中的i++和這個有什麼關系?
2.其次,你的程序永遠在執行
t.schele(new Test(),1000,2000);這一句,進入死循環。因為你在不斷的調用類中的run方法。永遠不會終止。所你按照你的程序來說,應該把判斷放在run方法中。加一句
if(i==3){
System.exist(0) ;
}
為什麼要用System.exist(0) ;來終止,因為你這是在不斷的new內存,如果ruturn終止,只能終止當前線程。不信你可以試試。
3. 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框架 使用很簡單
4. java定時器會空轉嗎
不會。
1、可以採用睡眠,sleep(),比較low。
2、在java類庫中已經寫好了定時器,java.util.Timer。可以拿來用,用的少,很多高級框架都是支持定時任務的。
5. java定時器怎麼停止
1、scheleUpdate
加入當前節點後,程序會每幀都會自動執行一次默認的Update函數。(註:一定是Update函數哦,若想調用其他自己命名的函數則使用schele)
看例子,走起。
首先在HelloWord類的頭文件中聲明Update函數:
[cpp] view plain print?
void update(float dt); //注意參數類型
然後在HelloWorld類源文件中實現函數Update:
[cpp] view plain print?
void HelloWorld::update(float dt)
{
CCLOG("");
}
現在我們可以調用了,在需要他不斷執行的地方加入調用的代碼就ok:
[cpp] view plain print?
this->scheleUpdate(); //this是當前節點,如layer,所以可以省略啦。
運行之後你將會看到不斷有被列印出來
2、scheleUpdate
可以沒隔幾秒執行某個自定義的函數,來看代碼:
首先還是在HelloWorld中聲明所要執行的函數:
6. 問個關於java定時器調整時間設定的問題
定時器啟動以後就不能去更改它的時間設定了的,
task.cancel();
用這個方法先停止定時器,然後用新的時間參數開啟新的定時器
這樣就能解決你的問題了
7. java 關於定時器timer取消任務的提問
定義一個flag變數,比如 boolean flag = true;
循環體裡面判斷flag為true時繼續,否則返回。
再定義一個觸發器來控制flag的值即可。
8. java中怎麼把定時器關掉
用cancel()方法 停止定時器
9. java類中的定時器
quartz中用有狀態的任務,他會在重復執行任務前判斷上一次是否已完成。
10. 有關Java定時器的問題
這樣改:
public class Test extends java.util.TimerTask{
public int i=0 ;
public static void main(String[] args) {
final Timer t = new Timer();
t.schele(new Test(),1000,2000);
}
public void run() {
System.out.println("sss");
i++;
System.out.println(i);
if(i == 3)
cancel();
}
}