定时任务3
java??Ê?ÈÎÎñ??Àí????
Java2µÄ?ª???üÖÐÌá??ÁËÒ?ÖÖºÜÊ?ÓõÄÏß?Ì??ÄÜ?ºÌáÇ???ÅÅ??À?Ä??ÎÊ??äÖ?ÐÐÄ?ÈÎÎñTimer
??TimerTask??Äã?ÉÒÔÊ?ÓÃÕâÐ?Àà????ºóÌ??ø?Ì??ÈÃÆäÔÚµÈ?ýÒ??Î?æ??µÄÊ??äºóÖ?ÐÐ???òÕßÈÃÆäÃ??ôÒ??ÎÊ??äÖ?ÐÐ??ÄãÒ??ÉÒÔÓÃThreadÀ?Íê?É??µ?ÀûÓÃTimerÓëTimerTaskÏÔÈ?Ê?ÊÂ??ÉÙ??
TimerTaskʵÏÖÁËRunnable?Ó?Ú???ýÖ?ÐеÄÈÎÎñÖÃÓÚrun()ÖÐ??TimerÊÇÒ??ö??ÅÅTimerTaskµÄÀà?Ë?ËÁ?ÕßÒ??ãÒ?Æð??×???ËùÓ?ÓÃÊ?Ê×ÏÈÓ?????Ò??öTimerTaskµÄ?ÔÏó??È?ºóÓÃÒ??öTimerµÄÀà?ÔÏó??ÅÅÖ?ÐÐËü
TimerÀà?üº?µÄ????ÓÐ?º
1.Timer()
ÒÔ???æ??Ê?ÔËÐÐtask
2.Timer(boolean)
trueÊ?Ê?ÓúóÌ??ø?ÌÏß?Ì??Ö?ÒªÊ?ϵÄ?ÌÐò?ÇÐðÔËÐÐ??ºóÌ??ø?ÌÏß?Ì?Í?áÖ?ÐÐ??
3.public void cancel()
ÖÕÖ?TimerµÄ??ÄÜÖ?ÐÐ??µ????á?ÔÕýÔÚÖ?ÐеÄÈÎÎñÓÐÓ?Ïì??µ?Ö?ÐÐcancel????ºó????ÄÜÔÙÓÃÆä?ÖÅäÈÎÎñ??
4.public void schedule(TimerTask task,Date time)
task????ÅÅÔÚtimeÖ???µÄÊ??äÖ?ÐÐ??Èç?ûÊ??äΪ?ýÈ?Ê?ÔòÈÎÎñÁ??ÌÖ?ÐÐ?? 5.public void schedule(TimerTask task, Date firstTime, long period) task????ÅÅÔÚtimeÖ???µÄÊ??äÖ?ÐÐ??Ö?Ðкó??Ã??ôperiod(ºÁÃë)????Ö?ÐÐ??ÓÉÓÚ?æ??µÄÊ??ä?ä?ô????ÄÜ??Ö?ÓëÊ?ÖÓ??×?µÄÍ???????ËùÒÔ?Ã?? ??×îÊʺÏ?Ó?ÌÆÚ?????ÖƵÂÊ×?È?ÊÇ?üÖØÒªµÄµÄµØ??
6.public void schedule(TimerTask task, long delay)
task????ÅÅÔÚdelay??ºÁÃë??Ö???µÄÊ??äºóÖ?ÐÐ??
7.public void schedule(TimerTask task,long delay, long period) task????ÅÅÔÚdelay??ºÁÃë??Ö???µÄÊ??äºóÖ?ÐÐ??Ö?Ðкó??Ã??ôperiod(ºÁÃë)????Ö?ÐÐ??
8.public void scheduleAtFixedRate(TimerTask task,Date firstTime, long period)
task????ÅÅÔÚfirstTimeÖ???µÄÊ??äÖ?ÐÐ??Ö?Ðкó??Ã??ôperiod(ºÁÃë)????Ö?ÐÐ??Ã?Ò??ÎÖØ??µÄÊ??äÊ?ºÐµÚÒ??ÎÖ?ÐÐ?ø??ÊǺÍÇ?Ò??ÎÖ?ÐÐÓÐ?Ø
??Òò?ËÖ?ÐеÄ×ÜËÙ?ÈÊÇ?Ì??µÄ??
9.public void scheduleAtFixedRate(TimerTask task,long delay,long period)
task????ÅÅÔÚdelay??ºÁÃë??Ö???µÄÊ??äºóÖ?ÐÐ??Ö?Ðкó??Ã??ôperiod(ºÁÃë)????Ö?ÐÐ??Ã?Ò??ÎÖØ??µÄÊ??äÊ?ºÐµÚÒ??ÎÖ?ÐÐ?ø??ÊǺÍÇ?Ò??ÎÖ?
ÐÐÓÐ?Ø??Òò?ËÖ?ÐеÄ×ÜËÙ?ÈÊÇ?Ì??µÄ??
TimerTaskµÄÖ?Òª?????º
1.public boolean cancel()
ÖÕÖ?ÈÎÎñµÄÖ?ÐÐÔËÐÐ??Èç?ûTimerÊ?ÒªÇóÑ,??Ö?ÐеÄ??ÔòÈç?ûÕýÔÚÖ?ÐÐ??ÔòÖ
?ÐÐÍêÁË?ÍÔÙ???áÑ,????Èç?û??Î?Ö?ÐÐ?ò??ÓÚÍ?ЪÆÚ??Ôò???áÖ?ÐÐ
ÁË
2.public abstract void run()
3.public long scheduledExecutionTime() ?µ?Ø????ÅÅ×îºóÖ?ÐÐÈÎÎñµÄÊ??ä??Ò??ãÈ???ÈÎÎñµÄµ??ñµÄʵÐÐÊÇ?ñ×ã????Ê?
??Ö?Ã??øÐÐ???Æ??µÄ?î??ΪÕýµ??º
public void run() {
if (System.currentTimeMillis() - scheduledExecutionTime() >=
MAX_TARDINESS)
return; // Too late; skip this execution. // Perform the task
}
4.protected TimerTask()
Àý?º
impimport java.io.*;
public class doTask extends TimerTask { String index;
Timer myTimer = new Timer();
public doTask(String index) {
this.index = index;
}
public void run() {
System.out.println(index);
}
public static void main(String args[]) { doTask myTask1 = new doTask("First task"); myTask1.start(0,3);
doTask myTask2 = new doTask("Second task");
myTask2.start(0,1);
try{
Thread.sleep(6000);
}
catch(InterruptedException e){ }
myTask1.end();
myTask2.end();//?ÌÐò?áÊøÊ?ÓÃcancel()?áÊøTimer
}
public void start(int delay, int internal) {
myTimer.schedule(this, delay * 1000, internal * 1000);
//ÀûÓÃtimer.schedule???? }
public void end(){
myTimer.cancel();
}
}
Êä?ö?º
First task
Second task
Second task
Second task
First task
Second task
Second task
Second task
===================================================
timer??timertaskµÄÓÃ??
Ê?ÓÃTimerTask
import java.util.Timer;
import java.util.TimerTask;
import java.util.Date;
/**
* @author vincent
*/
public class TimerTest {
public static void main(String[] args) { Timer t = new Timer();
//ÔÚ5ÃëÖ?ºóÖ?ÐÐTimerTaskµÄÈÎÎñ
t.schedule(new TimerTask(){
public void run()
{System.out.println("this is task you do1");} },5*1000);
//ÔÚDateÖ???µÄÌØ??Ê??ÌÖ?ºóÖ?ÐÐTimerTaskµÄÈÎÎñ Date d1 = new Date(System.currentTimeMillis()+1000); t.schedule(new TimerTask(){
public void run()
{System.out.println("this is task you do2");} },d1);
//ÔÚDateÖ???µÄÌØ??Ê??ÌÖ?ºó,Ã??ô1ÃëÖ?ÐÐTimerTaskµÄÈÎÎñÒ??Î
Date d2 = new Date(System.currentTimeMillis()+1000); t.schedule(new TimerTask(){
public void run()
{System.out.println("this is task you do3");} },d2,1*1000);
//ÔÚ3ÃëÖ?ºó,Ã??ô1ÃëÖ?ÐÐTimerTaskµÄÈÎÎñÒ??Î t.schedule(new TimerTask(){
public void run()
{System.out.println("this is task you do4");} },3*1000,1*1000);
//ÔÚ3ÃëÖ?ºó,?ø?ÔÃ??ô2ÃëÖ?ÐÐTimerTaskµÄÈÎÎñÒ??Î
t.scheduleAtFixedRate(new TimerTask(){ public void run()
{System.out.println("this is task you do6");}
},3*1000,2*1000);
}
scheduleºÍscheduleAtFixedRateµÄÇø?ðÔÚÓÚ??Èç?ûÖ????ªÊ?Ö?ÐеÄÊ??äÔÚµ?Ç?ϵÍ?ÔËÐÐÊ??äÖ?Ç???scheduleAtFixedRate?á?ÑÒÑ?,?ýÈ?µÄÊ??äÒ?×?ΪÖÜÆÚÖ?ÐÐ???øschedule???á?Ñ?ýÈ?µÄÊ??äËãÉÏ??
?ÈÈç
SimpleDateFormat fTime = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); Date d1 = fTime.parse("2005/12/30 14:10:00");
t.scheduleAtFixedRate(new TimerTask(){
public void run()
{
System.out.println("this is task you do6");
}
},d1,3*60*1000);
?ä?ôÊ??äÊÇ3?ÖÖÓ??Ö????ªÊ?Ê??äÊÇ2005/12/30
14:10:00??Èç?ûÎÒÔÚ14:17:00?ÖÖ?ÐÐÕâ?ö?ÌÐò??ÄÇÃ??áÁ??Ì?òÓ?3?Î
this is task you do6 //14:10
this is task you do6 //14:13
this is task you do6 //14:16
??ÇÒ×?Òâ??ÏÂÒ??ÎÖ?ÐÐÊÇÔÚ14:19 ?ø??ÊÇ
14:20???ÍÊÇ˵ÊÇ?ÓÖ???µÄ?ªÊ?Ê??ä?ªÊ?
µ?ÊÇÉÏÃæÈç?ûÓÃschedule???????ä?ôÊ??äÊÇ3?ÖÖÓ??Ö????ªÊ?Ê??äÊÇ2005/12/30
14:10:00??ÄÇÃ?ÔÚ14:17:00?ÖÖ?ÐÐÕâ?ö?ÌÐò??ÔòÁ???Ö?ÐÐ?ÌÐòÒ??Î????ÇÒÏÂÒ??εÄÖ?ÐÐÊ??äÊÇ 14:20???ø??ÊÇ?Ó14:10?ªÊ?ËãµÄÖÜÆÚ(14:19)??
}