scheduleWithFixedDelay和scheduleAtFixedRate的区别

Posted 無昂博奥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了scheduleWithFixedDelay和scheduleAtFixedRate的区别相关的知识,希望对你有一定的参考价值。

scheduleWithFixedDelay使用

public class MainDemo 
public static int times = 0;
    public static void main(String[] args) 

        ScheduledThreadPoolExecutor scheduledThreadPoolExecutor   = new ScheduledThreadPoolExecutor(1);
       
        scheduledThreadPoolExecutor.scheduleWithFixedDelay(new Runnable() 
            @Override
            public void run() 
                try 
                    System.out.println( "开始执行时间" + System.currentTimeMillis());
                    Thread.sleep(4000);
                 catch (InterruptedException e) 
                    e.printStackTrace();
                
                System.out.println( "执行结束时间" + System.currentTimeMillis());
            
        ,0,3, TimeUnit.SECONDS);
    

开始执行时间1658308204447
执行结束时间1658308208448
开始执行时间1658308211450
执行结束时间1658308215456
开始执行时间1658308218458
执行结束时间1658308222459
开始执行时间1658308225461
执行结束时间1658308229462
开始执行时间1658308232462
执行结束时间1658308236463
开始执行时间1658308239463
执行结束时间1658308243466
开始执行时间1658308246467
执行结束时间1658308250467
开始执行时间1658308253470

scheduleAtFixedRate的使用

import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;


public class MainDemo 
public static int times = 0;
    public static void main(String[] args) 

        ScheduledThreadPoolExecutor scheduledThreadPoolExecutor   = new ScheduledThreadPoolExecutor(1);
        scheduledThreadPoolExecutor.scheduleAtFixedRate(new Runnable() 
            @Override
            public void run() 
                try 
                    System.out.println( "开始执行时间" + System.currentTimeMillis());
                    Thread.sleep(4000);
                 catch (InterruptedException e) 
                    e.printStackTrace();
                
                System.out.println( "执行结束时间" + System.currentTimeMillis());
            
        ,0,3, TimeUnit.SECONDS);
        
    



总结

scheduleAtFixedRate函数是在函数体里的程序执行完毕之后,立即执行.

而scheduleWithFixedDelay是在函数体能的程序执行完成之后,再delay设置的时间后执行。

以上是关于scheduleWithFixedDelay和scheduleAtFixedRate的区别的主要内容,如果未能解决你的问题,请参考以下文章

scheduleAtFixedRate 与 scheduleWithFixedDelay

scheduleAtFixedRate和scheduleWithFixedDelay探究

Java定时线程实现:scheduleAtFixedRate 和 scheduleWithFixedDelay 的差别

Java定时线程实现:scheduleAtFixedRate 和 scheduleWithFixedDelay 的差别

Java定时线程实现:scheduleAtFixedRate 和 scheduleWithFixedDelay 的差别

ScheduledThreadPoolExecutor线程池scheduleAtFixedRate和scheduleWithFixedDelay的区别