美文网首页
JAVA 定时接口ScheduledExecutorServic

JAVA 定时接口ScheduledExecutorServic

作者: 蓝海寻鲸 | 来源:发表于2018-02-02 14:53 被阅读0次

    ScheduledExecutorService 接口继承ExecutorService

    ScheduledExecutorService 可以说是timer的多线程实现jdk官方推荐使用

    ExecutorService可安排在给定的延迟后运行或定期执行的命令,ScheduledExecutorService实现了schedule,scheduleAtFixedRate和scheduleWithFixedDelay方法。

    schedule方法使用各种延迟创建任务,并返回一个可用于取消或检查执行的任务对象

    scheduleAtFixedRate和scheduleWithFixedDelay方法创建并执行某些在取消前一直定期运行的任务。

    以下是一个带方法的类,它设置了 ScheduledExecutorService ,在 1 小时内每 10 秒钟蜂鸣一次:

    import static java.util.concurrent.TimeUnit.*;

    class BeeperControl {

        private final ScheduledExecutorService scheduler =

          Executors.newScheduledThreadPool(1);

        public void beepForAnHour() {

            final Runnable beeper = new Runnable() {

                    public void run() { System.out.println("beep"); }

                };

            final ScheduledFuture beeperHandle =

                scheduler.scheduleAtFixedRate(beeper, 10, 10, SECONDS);

            scheduler.schedule(new Runnable() {

                    public void run() { beeperHandle.cancel(true); }

                }, 60 * 60, SECONDS);

        }

    }

    schedule方法

    schedule(Runnable command, long delay,TimeUnitunit) 

    创建并执行在给定延迟后启用的一次性操作。

    参数:

    command- 要执行的任务。

    delay- 从现在开始延迟执行的时间。

    unit- 延迟参数的时间单位。

    返回:

    表示挂起任务完成的 Future,并且其get()方法在完成后将返回null。

    scheduleAtFixedRate方法

    scheduleAtFixedRate(Runnablecommand, long initialDelay, long period,TimeUnitunit)

    创建并执行一个在给定初始延迟后首次启用的定期操作,后续操作具有给定的周期;也就是将在initialDelay后开始执行,然后在initialDelay+period后执行,接着在initialDelay + 2 * period后执行,依此类推。如果任务的任一执行遇到异常,都会取消后续执行。否则,只能通过执行程序的取消或终止方法来终止该任务。

    参数:

    command- 要执行的任务。

    initialDelay- 首次执行的延迟时间。

    period- 连续执行之间的周期。

    unit- initialDelay 和 period 参数的时间单位。

    返回:

    表示挂起任务完成的 Future,并且其get()方法在取消后将抛出异常。

    scheduleWithFixedDelay方法

    scheduleWithFixedDelay(Runnablecommand, long initialDelay, long delay,TimeUnitunit)

    创建并执行一个在给定初始延迟后首次启用的定期操作,随后,在每一次执行终止和下一次执行开始之间都存在给定的延迟。如果任务的任一执行遇到异常,就会取消后续执行。否则,只能通过执行程序的取消或终止方法来终止该任务。

    参数:

    command- 要执行的任务。

    initialDelay- 首次执行的延迟时间。

    delay- 一次执行终止和下一次执行开始之间的延迟。

    unit- initialDelay 和 delay 参数的时间单位。

    返回:

    表示挂起任务完成的 Future,并且其get()方法在取消后将抛出异常。

    相关文章

      网友评论

          本文标题:JAVA 定时接口ScheduledExecutorServic

          本文链接:https://www.haomeiwen.com/subject/glcezxtx.html