Java 并发框架中的
ScheduleAtFixedRate
是一个计划任务调度器,它可以周期性地执行任务,无论任务是否在上次执行时完成。这是其主要方法:
ScheduledFuture
scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit)
:安排一个任务在指定的初始延迟后以固定的速率执行,单位由
TimeUnit
枚举指定。
ScheduleAtFixedRate
定期打印消息:
java
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;public class ScheduleAtFixedRateExample {public staticeadPoolExecutor(1, (r) -> {Thread t = new Thread(r, "scheduler");t.setDaemon(true);return t;});// 安排一个任务每 1 秒执行一次,初始延迟为 5 秒ScheduledFuture
future = executor.scheduleAtFixedRate(() -> System.out.println("Hello world!"), 5, 1, TimeUnit.SECONDS);// 等待 10 秒,然后取消任务try {Thread.sleep(10000);} catch (InterruptedException e) {}future.cancel(true);executor.shutdown();}
}
ScheduleAtFixedRate
保证了任务的周期性执行,无论任务上次执行时的状态如何。
ScheduleAtFixedRate
,Java 并发框架还提供了其他调度器,例如:
scheduleWithFixedDelay(Runnable command, long initialDelay, long delay, TimeUnit unit)
:安排一个任务在固定的延迟后以固定的延迟执行。
schedule(Runnable command, long delay, TimeUnit unit)
:安排一个任务在指定的延迟后仅执行一次。
ScheduleAtFixedRate
,因为任务重叠会对系统性能产生负面影响。
ScheduleAtFixedRate
是 Java 并发框架中一个重要的调度器,可用于定期执行任务。它保证了任务的周期性执行,即使前面的任务仍在运行。重要的是要正确理解其特点和局限性,并根据具体用例选择最合适的调度器。本文地址:https://www.qianwe.com/article/19e73d6d52c57890ce8d.html
上一篇:ScheduleAtFixedRateschedule...
下一篇:numberformat用于格式化数字,使其以特定的格...