schedule和scheduleAtFixedRate的区别在于,如果指定开始执行的时间在当前系统运行时间之前,scheduleAtFixedRate会把已经过去的时间也作为周期执行,而schedule不会把过去的时间算上
下面是一个例子,这段代码主要目地是当一定条件成立时才去运行主程序,之前会每隔一定的时间去检查。
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class TestTask {
public static boolean flag = true;
public static Timer t = new Timer();
public static void main(String[] args) {
// scheduleAtFixedRate(TimerTask task, Date firstTime, long period);
Date d2 = new Date(System.currentTimeMillis()+1000);
t.scheduleAtFixedRate(new TimerTask(){
public void run()
{
System.out.println("this is task you do");
if(true){//这里应该做一些检查,当符合一定的条件的时候,执行下里面的两句,这里固定写成了true
TestTask.flag = false;
t.cancel();
}
}
},d2,10*1000);//每隔10秒检查一次
//下面的while循环主要是hold住主程序
while(TestTask.flag){
try {
Thread.sleep(2*1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
//下面是执行主程序
System.out.println("dfdfdf");
}
}
分享到:
相关推荐
Java定时任务schedule和scheduleAtFixedRate的异同
主要为大家详细介绍了java中timer的schedule和scheduleAtFixedRate方法区别,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
NULL 博文链接:https://michael1990.iteye.com/blog/2113141
Executors.newScheduledThreadPool(1).scheduleAtFixedRate(new Runnable() { public void run() { Integer number = NumberMachine.getInstance().getCommonManager().generateNewManager(); System.out....
这两个类使用起来非常方便,可以完成我们对定时器的绝大多数需求。 Timer是一种定时器工具,用来在一个后台线程计划执行指定任务,并可以按计划一次或反复多次执行一个任务。它是用来执行任务的类,接收一个...
调度可以用 Timer 【调用 schedule() 或者 scheduleAtFixedRate() 方法实现】或者 ScheduledExecutorService 【结合工作中其它的需求,笔者选用此】 ScheduledExecutorService的初始化(线程池):
定时删除文件,导入库类有Timer类,TimeTask类,运用的函数有:scheduleAtFixedRate()。
调用scheduleAtFixedRate()方法或者scheduleWithFixedDelay()方法时,会向DelayQueue添加一个实现了RunnableScheduledFuture接口的ScheduledFutureTask
timer.scheduleAtFixedRate(new TimerTask() { @Override public void run() { Message message=new Message(); message.what=1; handler.sendMessage(message); } }, 1000,5000); 2.在线程中创建Handle
串行执行器服务 ScheduledExecutorService 的测试实用程序实现 允许测试如下代码: ... service.scheduleAtFixedRate(new Runnable() { @Override public void run() { count++; bar.doWhatever(); } },
timer.scheduleAtFixedRate(new TimerTask() { int j=0; int i=0; @Override public void run() { if(over==true){ return; } handler.sendEmptyMessage(kPostInvalidate); i=i+...
scheduledExecutorService.scheduleAtFixedRate(new ScrollTask(), 1,2, TimeUnit.SECONDS); super.onStart(); } @Override protected void onStop() { //当Activity不可见的时候停止切换 ...