zoukankan      html  css  js  c++  java
  • 关于scheduleAtFixedRate方法与scheduleWithFixedDelay的使用

    一、scheduleAtFixedRate方法

        该方法是ScheduledExecutorService中的方法,用来实现周期性执行给定的任务,public ScheduledFuture<?> scheduleAtFixedRate(Runnable command,long initialDelay,long period,TimeUnit unit);

    command:是给定的任务

    initial:表示第一次开始任务时要延迟的时间

    period:表示每次执行此任务要间隔的时间

    unit: 是用来指定前两个的时间单位

        执行次方后,开始计时,在延时结束后开始任务,并开始计算周期,下面分两种情况介绍

    情况一:

        执行任务的时间短,而周期长:这是执行完任务后,会等待周期结束,然后再次开始任务

    情况二:

        执行任务的时间长,而周期短;即在任务还未完成时,周期就已经结束,这时不能立马再开始一个任务,需要等待任务的完成,然后在开始任务,对于这种情况给出运行代码:

    import java.util.concurrent.Executors;
    import java.util.concurrent.ScheduledExecutorService;
    import java.util.concurrent.TimeUnit;
    
    public class MyscheduleAtFixedRate {
    
    	public static void main(String[] args) {
    		// TODO 自动生成的方法存根
    		ScheduledExecutorService executor=Executors.newScheduledThreadPool(2);
    		System.out.println("X  "+System.currentTimeMillis());
    		executor.scheduleAtFixedRate(new MyRunableA_atfix(), 1, 1, TimeUnit.SECONDS);
    		System.out.println("Y  "+System.currentTimeMillis());
    	}
    
    }
    class MyRunableA_atfix implements Runnable{
    
    	@Override
    	public void run() {
    		// TODO 自动生成的方法存根
    		
    		System.out.println("begin A "+System.currentTimeMillis());
    		try {
    			Thread.sleep(2000);
    		} catch (InterruptedException e) {
    			// TODO 自动生成的 catch 块
    			e.printStackTrace();
    		}
    		System.out.println("end A "+System.currentTimeMillis());
    	}
    }
    

      运行结果:

    X  1493197014282
    Y  1493197014297
    begin A 1493197015311
    end A 1493197017340
    begin A 1493197017340
    end A 1493197019354
    begin A 1493197019354
    

      这表明了任务一开始,延时1S,然后在周期结束后,等待当前任务的完成,在进行循环任务

    二、scheduleAtFixedRate方法

        此方法也是循环执行任务,这个方法的参数意义与scheduleAtFixedRate方法的相同

        此方法设置的周期,开始计时的时间与上个方法不同,它是在任务完成之后开始计时的,表示的是上一个任务与下一个任务之间的时间间隔

  • 相关阅读:
    《DSP using MATLAB》Problem 6.17
    一些老物件
    《DSP using MATLAB》Problem 6.16
    《DSP using MATLAB》Problem 6.15
    《DSP using MATLAB》Problem 6.14
    《DSP using MATLAB》Problem 6.13
    《DSP using MATLAB》Problem 6.12
    《DSP using MATLAB》Problem 6.11
    P1414 又是毕业季II
    Trie树
  • 原文地址:https://www.cnblogs.com/l1019/p/6769414.html
Copyright © 2011-2022 走看看