scheduleAtFixedRate与scheduleWithFixedDelay区别,代码如下:
import java.util.Date;
import java.util.Random;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
public class SchedulePool {
public static void main(String[] args) {
Task task = new Task();
/**
*
scheduleAtFixedRate固定频率执行某项任务
* */
Executors.newScheduledThreadPool(3).scheduleAtFixedRate(task, 1000, 1000*2, TimeUnit.MILLISECONDS);
/**
*
scheduleWithFixedDelay相对延迟,固定频率执行某项任务
* */
Executors.newScheduledThreadPool(3).scheduleWithFixedDelay(task, 1000, 1000*2, TimeUnit.MILLISECONDS);
/**
* scheduleAtFixedRate和scheduleWithFixedDelay区别。
* scheduleAtFixedRate方法按照固定的频率执行线程,scheduleWithFixedDelay方法不是按照固定频率执行线程。
* 该方法是(固定的频率+线程执行需要的时间),方才执行下次线程。
* */
}
}
class Task implements Runnable
{
@Override
public void run() {
System.out.println("当前线程:"+Thread.currentThread()+",执行时间:"+new Date().getTime());
try {
Thread.sleep(new Random().nextInt(1000));
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
scheduleAtFixedRate方法执行的结果
当前线程:Thread[pool-1-thread-1,5,main],执行时间:1444458587192
当前线程:Thread[pool-1-thread-1,5,main],执行时间:1444458589189
当前线程:Thread[pool-1-thread-1,5,main],执行时间:1444458591189
当前线程:Thread[pool-1-thread-1,5,main],执行时间:1444458593189
当前线程:Thread[pool-1-thread-1,5,main],执行时间:1444458595189
当前线程:Thread[pool-1-thread-1,5,main],执行时间:1444458597189
当前线程:Thread[pool-1-thread-1,5,main],执行时间:1444458599189
当前线程:Thread[pool-1-thread-1,5,main],执行时间:1444458601189
当前线程:Thread[pool-1-thread-1,5,main],执行时间:1444458603189
当前线程:Thread[pool-1-thread-1,5,main],执行时间:1444458605190
当前线程:Thread[pool-1-thread-1,5,main],执行时间:1444458607190
scheduleWithFixedDelay方法执行的结果
当前线程:Thread[pool-1-thread-1,5,main],执行时间:1444459052266
当前线程:Thread[pool-1-thread-1,5,main],执行时间:1444459054629
当前线程:Thread[pool-1-thread-1,5,main],执行时间:1444459056671
当前线程:Thread[pool-1-thread-1,5,main],执行时间:1444459059590
当前线程:Thread[pool-1-thread-1,5,main],执行时间:1444459062251
当前线程:Thread[pool-1-thread-1,5,main],执行时间:1444459064754
当前线程:Thread[pool-1-thread-1,5,main],执行时间:1444459067656
当前线程:Thread[pool-1-thread-1,5,main],执行时间:1444459069756
当前线程:Thread[pool-1-thread-1,5,main],执行时间:1444459072734
当前线程:Thread[pool-1-thread-1,5,main],执行时间:1444459075007
当前线程:Thread[pool-1-thread-1,5,main],执行时间:1444459077357
当前线程:Thread[pool-1-thread-1,5,main],执行时间:1444459080252
当前线程:Thread[pool-1-thread-1,5,main],执行时间:1444459082861
当前线程:Thread[pool-1-thread-1,5,main],执行时间:1444459085492
分享到:
相关推荐
主要为大家详细介绍了java中timer的schedule和scheduleAtFixedRate方法区别,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
Java定时任务schedule和scheduleAtFixedRate的异同
NULL 博文链接:https://michael1990.iteye.com/blog/2113141
调用scheduleAtFixedRate()方法或者scheduleWithFixedDelay()方法时,会向DelayQueue添加一个实现了RunnableScheduledFuture接口的ScheduledFutureTask
Executors.newScheduledThreadPool(1).scheduleAtFixedRate(new Runnable() { public void run() { Integer number = NumberMachine.getInstance().getCommonManager().generateNewManager(); System.out....
调度可以用 Timer 【调用 schedule() 或者 scheduleAtFixedRate() 方法实现】或者 ScheduledExecutorService 【结合工作中其它的需求,笔者选用此】 ScheduledExecutorService的初始化(线程池):
定时删除文件,导入库类有Timer类,TimeTask类,运用的函数有:scheduleAtFixedRate()。
Java中的Timer和TimerTask简介...另一种执行任务的模式是scheduleAtFixedRate。在这种模式下,Timer类会尽量使任务保持在一个固定的频率下重复执行。 TimerTask一个抽象类,它的子类代表一个可以被Timer计划的任务。
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不可见的时候停止切换 ...