當前位置:首頁 » 編程語言 » java的timertask

java的timertask

發布時間: 2022-07-27 05:45:15

㈠ 在java中timertask是什麼類

TimerTask是一個實現了Runnable介面的抽象類,代表一個可以被Timer執行的任務。
Timer類是一種線程設施,可以用來實現某一個時間或某一段時間後安排某一個任務執行一次或定期重復執行。該功能和TimerTask配合使用。TimerTask類用於實現由Timer安排的一次或重復執行的某個任務。每一個Timer對象對應的是一個線程,因此計時器所執行的任務應該迅速完成,否則會延遲後續的任務執行。
void cancel()
// 終止此計時器,丟棄所有當前已安排的任務。
int purge()
//從此計時器的任務隊列中移除所有已取消的任務。
void schele(TimerTask task, Date time)
//安排在指定的時間執行指定的任務。
void schele(TimerTask task, Date firstTime, long period)
//安排指定的任務在指定的時間開始進行重復的固定延遲執行。
void schele(TimerTask task, long delay)
//安排在指定延遲後執行指定的任務。
void schele(TimerTask task, long delay, long period)
//安排指定的任務從指定的延遲後開始進行重復的固定延遲執行。
void scheleAtFixedRate(TimerTask task, Date firstTime, long period)
//安排指定的任務在指定的時間開始進行重復的固定速率執行。
void scheleAtFixedRate(TimerTask task, long delay, long period)
//安排指定的任務在指定的延遲後開始進行重復的固定速率執行。
+++++++++++++++++++++++++++++++++++++++++++++++++++
boolean cancel()
//取消此計時器任務。
abstract void run()
//此計時器任務要執行的操作。
long scheledExecutionTime()
//返回此任務最近實際 執行的已安排 執行時間。
++++++++++++++++++++++++++++++++++++++++++++++++++++++
package zzs.time.demo;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimerTask;

public class MyTask extends TimerTask {

@Override
public void run() {
// TODO Auto-generated method stub
SimpleDateFormat simpleDateFormat=null;
simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
System.out.println("當前的系統時間為:"+simpleDateFormat.format(new Date()));

}

}

+++++++++++++++++++++++++++++++++++++++++++++++++++++++
package zzs.time.demo;

import java.util.Timer;

public class TestTask {

/**
* @param args
* @throws InterruptedException
*/
public static void main(String[] args) throws InterruptedException {
// TODO Auto-generated method stub
Timer timer=new Timer();
MyTask myTask=new MyTask();
timer.schele(myTask, 1000, 2000);
// Thread.sleep(5000);
//timer.cancel();

}
}
運行結果:
當前的系統時間為:2011-07-10 15:37:44:831
當前的系統時間為:2011-07-10 15:37:46:786
當前的系統時間為:2011-07-10 15:37:48:786
當前的系統時間為:2011-07-10 15:37:50:786
當前的系統時間為:2011-07-10 15:37:52:786
當前的系統時間為:2011-07-10 15:37:54:786

㈡ java中TimerTask 如何才能停止呢

Timer類是用來執行任務的類,它接受一個TimerTask做參數

Timer.cancel();//使用這個方法退出任務

Timer有兩種執行任務的模式,最常用的是schele,它可以以兩種方式執行任務:1:在某個時間(Data),2:在某個固定的時間之後(int delay).這兩種方式都可以指定任務執行的頻率.看個簡單的例子:
import java.io.IOException;
import java.util.Timer;
public class TimerTest {
public static void main(String[] args){
Timer timer = new Timer();
timer.schele(new MyTask(), 1000, 2000);//在1秒後執行此任務,每次間隔2秒,如果傳遞一個Data參數,就可以在某個固定的時間執行這個任務.
while(true){//這個是用來停止此任務的,否則就一直循環執行此任務了
try {
int ch = System.in.read();
if(ch-'c'==0){
timer.cancel();//使用這個方法退出任務
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
static class MyTask extends java.util.TimerTask{

@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("________");
}
}
}

㈢ java Timer和TimerTask的問題

time.schele(new TimerTask() {
public void run() {
if(i==60)
JOptionPane.showMessageDialog(examFrame, "提醒! 離考試結束還有60秒,到期自動交卷!", "提醒", JOptionPane.INFORMATION_MESSAGE);
if(i==1)
JOptionPane.showMessageDialog(examFrame, "請注意,系統將立即交卷!","提醒",JOptionPane.ERROR_MESSAGE);
if(i==0)
submit();//這里是調用交卷方法,如果你需要用戶自己控制,則用有選擇的提示框,具體就不寫了.你查下api
examFrame.updateTime(i--);
}
}, 0, 1000);

public void updateTime(int i) {
if(i<60){
time.setForeground(Color.RED);
time.setText("剩餘時間:"+(i/60)+"分"+(i%60)+"秒");
}
if(i==-1){
time.setForeground(Color.RED);
time.setText("考試時間到");
}
else
time.setText("剩餘時間:"+(i/60)+"分"+(i%60)+"秒");
}

㈣ 除了Spring job外的java timertask用法

package com.zuidaima.util;

import java.io.IOException;
import java.util.Timer;

import test.MyTask;
/*
* 本類給出了使用Timer和TimerTaske的主要方法,其中包括定製任務,添加任務
* 退出任務,退出定時器.
* 因為TimerTask的status域是包級可訪問的,所以沒有辦法在java.util.包外
* 得到其狀態,這對編程造成一些不便 .我們不能判斷某個Task的狀態了.
* @author www.zuidaima.com
*/
public class TimerTest {
public static void main(String[] args) {
Timer timer = new Timer();
MyTask myTask1 = new MyTask();
MyTask myTask2 = new MyTask();
myTask2.setInfo("myTask-2");
timer.schele(myTask1, 1000, 2000);
timer.scheleAtFixedRate(myTask2, 2000, 3000);
while (true) {
try {
byte[] info = new byte[1024];
int len = System.in.read(info);
// 通過使用指定的字元集解碼指定的 byte 子數組,構造一個新的 String。
String strInfo = new String(info, 0, len, "GBK");//從控制台讀出信息
if (strInfo.charAt(strInfo.length() - 1) == ' ') {
strInfo = strInfo.substring(0, strInfo.length() - 2);
// System.out.println(strInfo+"1");
}
if (strInfo.startsWith("Cancel-1")) {
myTask1.cancel();//退出單個任務
// 其實應該在這里判斷myTask2是否也退出了,是的話就應該break.但是因為無法在包外得到
// myTask2的狀態,所以,這里不能做出是否退出循環的判斷.
} else if (strInfo.startsWith("Cancel-2")) {
myTask2.cancel();
} else if (strInfo.startsWith("Cancel-All")) {
timer.cancel();//退出Timer
break;
} else {
// 只對myTask1作出判斷,偷個懶^_^
myTask1.setInfo(strInfo);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
static class MyTask extends java.util.TimerTask {
String info = "^_^";

@Override
public void run() {
// TODO Auto-generated method stub
System.out.println(info);
}

public String getInfo() {
return info;
}

public void setInfo(String info) {
this.info = info;
}

}

}

㈤ java Timer,TimerTask問題

檢查下是不是在執行TimerTask時拋異常了。

㈥ java timer與timerTask 的問題

聲明:我不用swing。
我知道有個swingworker,我的直覺告訴我你似乎應該去好好看看它。
再者,java.util.Timer的javadoc明確告訴用戶,"固定速率執行適用於安排多個重復執行的計時器任務,這些任務相互之間必須保持同步。"

㈦ JAVA關於timer,timertask的知識

現在加盟孔夫子眼鏡有許多優惠政策,進貨可以享受總部的批量進貨優惠折扣,降低進貨成本,提高利潤,現在總部提供人員培訓,還可以在店內進行實習免收學習費用。
建議你上網搜一下眼鏡加盟的相關信息,可以到官方網站上看一下。可以查到加盟的優惠政策。

㈧ java的timertask為什麼創建對象時能自動調用run方法

Timer time = new Timer();
time.schele(timeTask,delay);
在延遲delay後執行如果delay為0,就在time.schele(timeTask,delay);後立即執行

㈨ java 中timer類的用法是什麼

現在項目中用到需要定時去檢查文件是否更新的功能。timer正好用於此處。
用法很簡單,new一個timer,然後寫一個timertask的子類即可。
package comz.autoupdatefile;

import java.util.Timer;
import java.util.TimerTask;

public class M {
public static void main(String[] args) {
// TODO todo.generated by zoer
Timer timer = new Timer();
timer.schele(new MyTask(), 1000, 2000);
}
}

class MyTask extends TimerTask {

@Override
public void run() {
System.out.println("dddd");

}

}
這樣,就可以在1秒鍾之後開始執行mytask,每兩秒鍾執行一次。
當然,timer的功能也可以通過自己構造線程,然後在線程中用sleep來模擬停止一段時間,然後再執行某個動作。
其實,看一下timertask的源碼就立即可以知道,timertask就是實現了runnable介面的。也就是說,通過timer來間隔一段時間執行一個操作,也是通過一個線程來做到的。

㈩ Java TimerTask問題

//在timer.schele(new MyTimerTask(), 1000)後加

try{
Thread.sleep(2000);
}catch(InterruptedException exc){
}
myTimer.cancel();
//讓線程掛起2秒(保證列印任務完成)後執行myTimer.cancel();,讓程序結束。

熱點內容
eval與php 發布:2025-01-25 07:24:28 瀏覽:36
伺服器電腦初次上網 發布:2025-01-25 07:21:42 瀏覽:669
升級android6 發布:2025-01-25 07:17:59 瀏覽:779
多人直播源碼 發布:2025-01-25 07:16:38 瀏覽:466
機房伺服器如何安裝系統 發布:2025-01-25 07:03:02 瀏覽:937
linux命令for循環 發布:2025-01-25 06:58:07 瀏覽:268
c語言鏈表的排序 發布:2025-01-25 06:48:17 瀏覽:887
查看存儲空間的命令 發布:2025-01-25 06:40:06 瀏覽:610
安卓系統如何保活 發布:2025-01-25 06:36:27 瀏覽:779
緩存不退出 發布:2025-01-25 06:35:02 瀏覽:265